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

歡迎訪問 生活随笔!

生活随笔

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

java

Java线程通俗讲解

發布時間:2025/4/16 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java线程通俗讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java線程介紹

通常情況下,在一個服務器上面運行的程序是很多的,可能同一時間會有多個客戶
端的程序訪問服務器,服務器都要對這些客戶端做出響應。如果我們處理器有限,
只有一個處理器的時候,如何能夠讓這些任務看起來是并行的同時執行呢?這里就需要用到線程的知識。

當有超過一個以上執行空間時,看起來會像是有好幾件事同時發生。但實際上,只有真正的多處理器系統才可以同時執行好幾件事。使用java多線程可以讓它看起來好像同時都在執行,也就是說,執行的動作可以在執行空間中快速切換,因此感覺上好像是每一個任務都在同時執行。在Java中,我們用Thread這個類來實現這一點。

下面我們通過代碼一起來看一下如何新建一個線程(ThreadTest)。首先,我們需要新建一個Runnable對象。稍后我們會再定義Runnable類。而這個類會定義線程會執行什么樣的任務。之后,我們會定義Thread對象,用它來去執行Runnable定義好的任務。然后,啟動Thread,將Runnable對象的方法擺到新的執行空間中。

package web_server;public class ThreadTest {public static void main(String[] args) {// 新建Runnable對象Runnable threadJob = new MyRunnable();// 將Runnable的實例傳給Thread的構造函數Thread myThread = new Thread(threadJob);// 調用start()才會讓線程開始執行,在此之前// 它只是Thread一個實例,并不是真的線程myThread.start();System.out.println("back in main");}}

接下來我們再看如何實現Runnable。Runnable是一個接口,該接口只有一個方法,就是public void run()。在run中定義要執行的方法。因為Runnable是一個接口,線程的任務是可以被定義在任何實現Runnable的類上。線程只在乎傳入給Thread的構造函數的參數是否為實現Runnable的類。當你把Runnable傳給Thread的構造函數時,實際上就是在給Thread取得run的辦法,這就等于你給Thread一項任務。

package web_server;public class MyRunnable implements Runnable{// Runnable接口只有一個方法,就是public void run()public void run() {go();}public void go() {doMore();}public void doMore() {System.out.println("top o' the stack");} }

線程的原子性

每一個線程變成可執行狀態之后,它就會在可執行和不可執行兩種狀態中來來回回的切換,有的時候也會出現第三種狀態,就是暫時不可執行狀態?,F在假設你有多個線程在排隊等待執行,這時候哪個線程先執行,具體執行多長時間呢?這些工作都由調度器來實現。線程調度器會去決定哪個線程跑起來,而哪個線程會暫時不去執行。

但是這樣又會有一個大問題,特別是對于多線程而言,可能會發生a線程執行一段時間,然后b線程再執行一段時間。如果a線程和b線程的程序方法互不影響還好,如果a線程和b線程使用的是同樣的程序方法,可能會發生結果互相影響的問題。對于這樣的問題,我們可以通過Synchronized來解決。Synchronized關鍵字代表線程需要一把鑰匙來存取被同步化過程的線程。也就是說,通過synchronized同步化修飾過后的方法,會將方法中的內容執行完之后,再交給別的線程去執行。如果想要保護重要的數據,就把作用在數據上的方法給同步化。這部分程序,不可分割,應該被連續的執行。在古典物理學中,我們認為原子是不可分割的最小物理單元。因此我們說synchronized修飾過的方法具有原子性。我們下面通過一個例子一起來看一下。

package web_server;public class TestSync implements Runnable{private int balance = 0;public void run() {for(int i = 0; i < 50; i++) {increment();System.out.println("balance is " + balance);}}public void increment() { // public synchronized void increment() {int i = balance;balance = i + 1;}} package web_server;public class TestSyncTest {public static void main(String[] args) {// TODO Auto-generated method stubTestSync job = new TestSync();Thread a = new Thread(job);Thread b = new Thread(job);a.start();b.start();}}

可以看到,使用synchronized之后執行的效果看起來很正常,而不加之后有一些怪異的值。我們這里新建了兩個線程,這兩個線程執行的都是同樣的方法。之所以不適用synchronized會出現數字亂的問題在于,比如說執行了i=balance之后,a線程就切換成b線程去執行了。還沒有來得及累加。B線程執行一段時間之后再切換成a線程,然后a線程再繼續累加,就會出現數字錯亂的問題。而使用synchronized會讓其強制執行完累加之后再去切換線程,所以不會出現錯亂。

最后附上 本文內容對應的視頻講解

參考資料

《Head First Java》

總結

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

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

主站蜘蛛池模板: 黄色免费在线观看视频 | 欧美性生交大片免费看app麻豆 | 少妇精品导航 | 精品人妻一区二区三区四区久久 | 女人高潮被爽到呻吟在线观看 | 自拍三级视频 | 永久免费快色 | 欧美成人精品在线观看 | 国产精品一区二区无码免费看片 | 欧美日韩在线不卡 | 天天色一色 | 中文字幕一区二区三区四区免费看 | 亚洲人在线 | 欧美色图亚洲激情 | 九色91popny蝌蚪新疆 | 精品人妻一区二区三区麻豆91 | a级无毛片 | 亚洲欧洲天堂 | 无码人妻黑人中文字幕 | 国产精品观看 | 伊人伊人网 | 久久精品福利 | xxx国产| 黄色免费在线观看网站 | 青青操精品 | 一个人看的毛片 | 热玖玖| 精品一区二区免费视频 | 国产又粗又猛又爽又黄视频 | 成年人小视频在线观看 | 五月天婷婷社区 | 日批免费网站 | 中文字幕有码在线观看 | 国产精品操 | 亚洲自拍偷拍精品视频 | 欧美大色| 日韩欧美中文字幕一区 | 国产一线二线三线在线观看 | 欧美少妇一级片 | 91精品综合久久久久久五月天 | 可以看的av网站 | 97免费在线视频 | 美女被草出白浆 | 人体私拍套图hdxxxx | 欧美女优在线观看 | 日韩免费网 | 91精品毛片| 国产 欧美 在线 | 四川丰满妇女毛片四川话 | 日本a一级片 | 国产在线播放网站 | 69网站在线观看 | 亚洲av成人无码久久精品老人 | 亚洲一区二区久久 | 99国内揄拍国内精品人妻免费 | 老女人做爰全过程免费的视频 | 天天干天天干天天操 | 国产精品调教视频 | 国产免费一区二区三区最新不卡 | 97超碰网| 亚洲理论视频 | 九色激情网 | 精品999久久久一级毛片 | 高潮喷水一区二区三区 | 精品少妇 | 国产原创在线观看 | 久久久久久久久久久97 | 日本电影大尺度免费观看 | 日本体内she精高潮 男女视频在线免费观看 | 国产综合精品久久久久成人影 | 欧美区在线观看 | 欧美三级中文字幕 | 在线观看色网站 | 五月婷婷在线视频 | 色无极在线 | 孕妇疯狂做爰xxxⅹ 国产精品乱码久久久久久 99久久久成人国产精品 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 精品国产午夜福利 | 乱一色一乱一性一视频 | 色综网 | 97精品国产 | 夜夜超碰| 性插动态视频 | 狠狠做深爱婷婷久久综合一区 | 日本a级片视频 | 免费久久精品视频 | 国产电影一区二区三区 | 波多野吉衣一二三区乱码 | 免费观看视频一区二区 | 天堂成人在线 | 久久婷婷五月国产色综合激情 | 麻豆视频免费在线观看 | 欧美一区二区精品 | 精品人妻人伦一区二区有限公司 | 玖玖爱这里只有精品 | 绯色av蜜臀vs少妇 | 欧美激情16p| 性高潮久久久久久久 | 中文一区二区在线播放 |