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

歡迎訪問 生活随笔!

生活随笔

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

java

Java基础 线程同步

發布時間:2025/3/12 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础 线程同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線程的同步:在編程過程中,為了防止多線程訪問共享資源時發生沖突,Java提供了線程同步機制。所謂同步,就是指一個線程等待另一個線程操作完再繼續的情況。

線程安全:一個類很好地同步以保護它的數據,這個類就稱為線程安全的。

線程不安全:多個線程先后更改數據造成某些線程得到的是無效數據。

概念比較抽象,通過下面的程序來解釋:

this.ticket–表達式的結果為ticket的當前值,因此每次輸出的ticket是當前的票數。但是由輸出結果可以看到最后輸出的:“售票員B賣票.ticket = 0”。這就和之前的if(this.ticket > 0) 產生了沖突,為什么ticket=0,仍然能進入if循環呢?

這就是由于不同步所造成的,程序在運行過程中需要完成兩步操作:

1.判斷是否還有票

2.賣票

但是步驟1和2之間出現了延遲。假設現在只剩下最后一張票,所有線程幾乎同時進入run()方法執行,此時if判斷條件都滿足,再執行自減操作就會有錯誤。這就是線程不同步。

package com.thred;class MyThread implements Runnable {//線程主體類private int ticket = 6;@Overridepublic void run() {//理解為線程的主方法for(int x = 0; x < 50; x++) {if(this.ticket > 0) {//賣票的條件try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "賣票.ticket = " + this.ticket--);//this.ticket--表達式的結果為ticket的當前值}}} } public class Test {public static void main(String[] args) {MyThread mt = new MyThread();new Thread(mt, "售票員A").start();new Thread(mt, "售票員B").start();new Thread(mt, "售票員C").start();} } /* 售票員A賣票.ticket = 6 售票員C賣票.ticket = 6 售票員B賣票.ticket = 5 售票員A賣票.ticket = 4 售票員C賣票.ticket = 3 售票員B賣票.ticket = 2 售票員A賣票.ticket = 1 售票員C賣票.ticket = 1 售票員B賣票.ticket = 0 */

怎么解決線程不同步問題?同步代碼塊,同步方法塊。解決了不同步問題,但是程序執行速度變慢,安全性高,性能降低了。

目前只是入門,只簡單的寫一下怎么用,原理的東西等后面深入學習再補充。

同步代碼塊:使用Synchronized關鍵字定義的代碼塊,同步時需要設置一個對象鎖,一般是給當前對象this上鎖。

package com.thred;class MyThread implements Runnable {//線程主體類private int ticket = 6;@Overridepublic void run() {//理解為線程的主方法for(int x = 0; x < 50; x++) {synchronized(this) {//同步代碼塊if(this.ticket > 0) {//賣票的條件try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();} System.out.println(Thread.currentThread().getName() + "賣票.ticket = " + this.ticket--);}}}} } public class Test {public static void main(String[] args) {MyThread mt = new MyThread();new Thread(mt, "售票員A").start();new Thread(mt, "售票員B").start();new Thread(mt, "售票員C").start();} } /* 售票員A賣票.ticket = 6 售票員A賣票.ticket = 5 售票員A賣票.ticket = 4 售票員A賣票.ticket = 3 售票員A賣票.ticket = 2 售票員A賣票.ticket = 1 */

同步方法:在一個方法上使用synchronized定義,此方法稱為同步方法。

package com.thred;class MyThread implements Runnable {//線程主體類private int ticket = 6;@Overridepublic void run() {//理解為線程的主方法for(int x = 0; x < 50; x++) {this.sale();}}public synchronized void sale() {//同步方法if(this.ticket > 0) {//賣票的條件try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "賣票.ticket = " + this.ticket--);}} } public class Test {public static void main(String[] args) {MyThread mt = new MyThread();new Thread(mt, "售票員B").start();new Thread(mt, "售票員A").start();new Thread(mt, "售票員C").start();} } /* 售票員B賣票.ticket = 6 售票員B賣票.ticket = 5 售票員B賣票.ticket = 4 售票員B賣票.ticket = 3 售票員B賣票.ticket = 2 售票員B賣票.ticket = 1 */

總結

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

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

主站蜘蛛池模板: 涩涩爱影院 | 久久艹综合| 亚洲av综合色区 | 国产一区免费在线 | 欧美激情视频一区二区 | 欧美爽爽| 香港三日本三级少妇66 | 日本japanese极品少妇 | 亚洲一区二区精品在线 | 中文字幕精品久久久久人妻红杏1 | 久久久ww| 女人的黄色片 | 乐播av一区二区三区 | 久色成人| 亚洲熟妇国产熟妇肥婆 | 亚洲国产成人在线 | 久热一区 | 国产夫妻一区 | 久久久精品中文字幕麻豆发布 | 成人高清在线观看 | 成品人视频ww入口 | 草草影院在线 | 女人下面喷水视频 | 国产九色91回来了 | 午夜青青草 | 可以直接在线观看的av | 小伸进喷水网站 | 999久久久免费精品国产 | 色天堂视频 | 人人看人人做 | 亚洲天堂精品在线 | 欧美另类在线观看 | 中国精品久久久 | 亚洲色偷精品一区二区三区 | 蜜桃视频在线观看网站 | 亚洲欧洲久久久 | 狠狠操网 | 二区三区偷拍浴室洗澡视频 | av簧片 | 国产精品视频一二三区 | 欧美大片一级 | 播放男人添女人下边视频 | 国产suv精品一区二区 | 国产欧美精品久久久 | 欧美亚洲一区二区三区四区 | 免费网站观看www在线观 | 韩国一区二区三区在线观看 | 黄色一节片 | 伊人蕉久影院 | 3p视频在线 | 国产又粗又猛又爽又黄 | 国产高清在线一区 | 欧美一级免费在线 | 欧美电影一区二区三区 | 欧洲亚洲一区二区三区 | 久热亚洲| 欧美日韩成人一区二区 | 在线你懂的 | 国产香蕉一区 | www国产精品视频 | 欧美性生活免费视频 | 视频在线观看电影完整版高清免费 | 欧美在线播放一区二区 | 欧美乱妇狂野欧美在线视频 | 91在线中文 | 六月婷婷在线 | 亚洲aⅴ乱码精品成人区 | 国产极品网站 | 中文黄色片| 亚洲色图 欧美 | 欧美h视频在线观看 | 久久精品一| a级片在线免费看 | 亚洲综合在线视频 | 黄色在线视频网址 | 欧美精品福利视频 | av在线毛片 | 曰批视频在线观看 | 黄色的网站免费观看 | 美丽的小蜜桃2:美丽人生 | 在线高清免费观看 | 久久精品视频18 | 操碰人人 | 黄色av网页| 国产免费av网站 | 精品国产乱码一区二区三 | 欧美在线观看视频 | 久久亚洲av永久无码精品 | 91污在线观看 | 超碰激情| 成全世界免费高清观看 | 波多野结衣视频免费看 | 日韩一级二级 | 韩国禁欲系高级感电影 | 亚洲免费一 | 国产天堂在线 | 少妇又色又爽又高潮极品 | 在线伊人网 | 亚洲欧美日韩成人 |