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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java线程——什么是线程?

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

【0】README

0.1) 本文描述轉自 core java volume 1, 源代碼為原創,旨在理解 java線程——什么是線程? 的相關知識;
0.2)線程定義:一個程序可以執行多個任務,每一個任務成為線程;
0.3)進程和線程的區別: 本質的區別是, 每個進程擁有自己的一整套變量,而線程則共享數據;


【1】 什么是線程?

1.1)使用線程給其他任務提供機會

  • 1.1.1)下面是在一個單獨的線程中執行一個任務的簡單過程:
  • step1)將任務代碼移到實現了 Runnable接口的類的run方法中:
public interface Runnable {void run(); } class MyRunnable implements Runnable
  • step2)創建一個類對象:
Runnable r = new MyRunnable();
  • step3)由 Runnable創建一個 Thread對象:(創建一個新線程)
Thread t = new Thread(r);
  • step4)啟動線程:
t.start();

Warning)

  • W1) 不要調用 Thread類或 Runnable對象的run方法。 直接調用run方法, 只會執行同一個線程的任務, 而不會啟動新線程;
  • W2)應該調用 Thread.start 方法, 這個方法將創建一個執行run方法的 新線程;
  • source code: https://github.com/pacosonTang/core-java-volume/blob/master/chapter14/ThreadTest.java)

1.2)看個荔枝:

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

  • Conclusion)實現Runnable接口比繼承Thread類所具有的優勢: (干貨)

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

Warning)

  • W1) main方法其實也是一個線程。在java中所有的線程都是同時啟動的,至于什么時候,哪個先執行,完全看誰先得到CPU的資源;
  • W2)在java中,每次程序運行至少啟動2個線程。一個是main線程,一個是垃圾收集線程。因為每當使用java命令執行一個類的時候,實際上都會啟動一個JVM,每一個jVM 實際就是在操作系統中啟動了一個進程;

1.3)判斷線程是否啟動(主線程也有可能在子線程結束之前結束。并且子線程不受影響,不會因為主線程的結束而結束)

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。