日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java线程——什么是线程?

發(fā)布時(shí)間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程——什么是线程? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【0】README

0.1) 本文描述轉(zhuǎn)自 core java volume 1, 源代碼為原創(chuàng),旨在理解 java線程——什么是線程? 的相關(guān)知識(shí);
0.2)線程定義:一個(gè)程序可以執(zhí)行多個(gè)任務(wù),每一個(gè)任務(wù)成為線程;
0.3)進(jìn)程和線程的區(qū)別: 本質(zhì)的區(qū)別是, 每個(gè)進(jìn)程擁有自己的一整套變量,而線程則共享數(shù)據(jù);


【1】 什么是線程?

1.1)使用線程給其他任務(wù)提供機(jī)會(huì)

  • 1.1.1)下面是在一個(gè)單獨(dú)的線程中執(zhí)行一個(gè)任務(wù)的簡(jiǎn)單過(guò)程:
  • step1)將任務(wù)代碼移到實(shí)現(xiàn)了 Runnable接口的類的run方法中:
public interface Runnable {void run(); } class MyRunnable implements Runnable
  • step2)創(chuàng)建一個(gè)類對(duì)象:
Runnable r = new MyRunnable();
  • step3)由 Runnable創(chuàng)建一個(gè) Thread對(duì)象:(創(chuàng)建一個(gè)新線程)
Thread t = new Thread(r);
  • step4)啟動(dòng)線程:
t.start();

Warning)

  • W1) 不要調(diào)用 Thread類或 Runnable對(duì)象的run方法。 直接調(diào)用run方法, 只會(huì)執(zhí)行同一個(gè)線程的任務(wù), 而不會(huì)啟動(dòng)新線程;
  • W2)應(yīng)該調(diào)用 Thread.start 方法, 這個(gè)方法將創(chuàng)建一個(gè)執(zhí)行run方法的 新線程;
  • source code: https://github.com/pacosonTang/core-java-volume/blob/master/chapter14/ThreadTest.java)

1.2)看個(gè)荔枝:

  • 1.2.1)多線程共享一個(gè)變量

  • Conclusion)實(shí)現(xiàn)Runnable接口比繼承Thread類所具有的優(yōu)勢(shì): (干貨)

    • C1):適合多個(gè)相同的程序代碼的線程去處理同一個(gè)資源;
    • C2):可以避免java中的單繼承的限制;
    • C3):增加程序的健壯性,代碼可以被多個(gè)線程共享,代碼和數(shù)據(jù)獨(dú)立;

Warning)

  • W1) main方法其實(shí)也是一個(gè)線程。在java中所有的線程都是同時(shí)啟動(dòng)的,至于什么時(shí)候,哪個(gè)先執(zhí)行,完全看誰(shuí)先得到CPU的資源;
  • W2)在java中,每次程序運(yùn)行至少啟動(dòng)2個(gè)線程。一個(gè)是main線程,一個(gè)是垃圾收集線程。因?yàn)槊慨?dāng)使用java命令執(zhí)行一個(gè)類的時(shí)候,實(shí)際上都會(huì)啟動(dòng)一個(gè)JVM,每一個(gè)jVM 實(shí)際就是在操作系統(tǒng)中啟動(dòng)了一個(gè)進(jìn)程;

1.3)判斷線程是否啟動(dòng)(主線程也有可能在子線程結(jié)束之前結(jié)束。并且子線程不受影響,不會(huì)因?yàn)橹骶€程的結(jié)束而結(jié)束)

總結(jié)

以上是生活随笔為你收集整理的java线程——什么是线程?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。