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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java学习笔记】线程学习笔记

發布時間:2023/12/9 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java学习笔记】线程学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、資源

? ?http://blog.csdn.net/axman/article/details/431796

? ?這個博客里有Java多線程、線程池的一系列,從基礎開始就很清楚,牛人

二、重點

? 今天讀到了基礎篇(三),跳過了后面的方法介紹,以后估計還得補上來的....

? 做筆記......

? 1、線程對象和線程

? ? ?線程對象:一個Object類,線程執行形式的封裝

? ? ?線程:真正執行的那什么..

? 2、JVM到底做了什么?

? ? ? "?JVM進程被啟動,在同一個JVM進程中,有且只有一個進程,就是它自己.然后在這個JVM環境中,

所有程序的運行都是以線程來運行.JVM最先會產生一個主線程,由它來運行指定程序的入口點.在這個
程序中,就是主線程從main方法開始運行.當main方法結束后,主線程運行完成.JVM進程也隨之退出.
????我們看到的是一個主線程在運行main方法,這樣的只有一個線程執行程序邏輯的流程我們稱
之為單線程.這是JVM提供給我們的單線程環境,事實上,JVM底層還至少有垃圾回收這樣的后臺線程以
及其它非java線程,但這些線程結我們而言不可訪問,我們只認為它是單線程的."

? 3、并行和并發

? ? 并行:單CPU中,通過調度在線程直接切換

? ? 并發: ?多CPU中,同時讓兩個以上線程同時運行

? ? 疑惑1:我的理解:單行時其實某一時間點上只有一個線程在跑?

? ? 疑惑2:我的理解:等于某個時間點可以有多個線程跑?那系統的進程和線程是什么關系?一個進程類似于一個程序的運行空間,而線程則是進程里的某些任務的執行通道?

? 4、thread.start()

  • ? ? ? 你只要調用start()方法,JVM就會管理這個線程對象讓它產生一個線程并注冊到線程處理系統中(線程棧).
  • ? ? ? start()方法最本質的功能是從CPU中申請另一個線程空間來執行run()方法中的代碼,它和當前的線程是
    ? 兩條線,在相對獨立的線程空間運行,也就是說,如果你直接調用線程對象的run()方法,當然也會執行,但
    ? 那是在當前線程中執行,run()方法執行完成后繼續執行下面的代碼.而調用start()方法后,run()方法的
    ? 代碼會和當前線程并發(單CPU)或并行(多CPU)執行.? ? ? ? ?
  • ? ? ? 一個Thread的實例一旦調用start()方法,這個實例的started標記就標記為true,事實中不管這個線程
    ? 后來有沒有執行到底,只要調用了一次start()就再也沒有機會運行了,這意味著:
    ? ? [通過Thread實例的start(),一個Thread的實例只能產生一個線程]

? ? ? ? ? ?

public synchronized void start() {
if (started)
throw new IllegalThreadStateException();
started
= true;
group.add(
this);
start0();
}

  5、thread(new Runanle()).start()

? ? ??一個Runnable實例給Thread對象多次包裝,我們就可以看到它們實際是在同一實例上啟動線程

? ? ? 例子在資源博客http://blog.csdn.net/axman/article/details/420892中

? ? ? 我的理解:

? ? ? ? 這里很奇怪我覺得,

? ? ? ? ???R?r?=?new?R();

? ? ? ? ?for(int?i=0;i<10;i++) {
? ? ? ? ? ? ?new?Thread(r).start();
? ? ? ? ? }

? ? ? ? 雖然每次都是?new?Thread(r).start(),但是按照博客的說法,應該是在一個線程,那這說明了線程對象和線程的區別,每次新建的線程對象肯定是不一樣的,但是他們啟動的線程是一樣的,是這樣理解的么?

轉載于:https://www.cnblogs.com/hundan/archive/2011/09/04/2166086.html

總結

以上是生活随笔為你收集整理的【Java学习笔记】线程学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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