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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

13.8 线程的安全问题和解决方法

發(fā)布時間:2025/4/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13.8 线程的安全问题和解决方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package cn.chen.threadsecurity; /* 出現(xiàn)線程安全問題的原因:1.存在兩個或兩個以上的線程對象,而且線程之間共享一個資源。2.有多個語句操作了共享資源。java線程同步機制:方式一:同步代碼塊:同步代碼塊的格式:synchronize(鎖對象){需要被同步的代碼。}注意事項:1.任意一個對象都可以做為一個鎖對象,例如 static Object o = new Object();2.在同步代碼塊中調(diào)用了sleep方法,在此過程中并不會釋放鎖3.只有真正存在線程安全問題的時候才使用同步代碼塊,否則會降低效率。4.多線程操作 的鎖對象 必須是唯一共享的 ,否則無效。方式二:同步函數(shù):后面介紹 */ class SaleTicket extends Thread{//設(shè)置num為靜態(tài)的 //票數(shù),非靜態(tài)的成員變量,非靜態(tài)的成員變量數(shù)據(jù)是在每個對象中都會維護一份數(shù)據(jù)。static int num = 10 ; static Object o = new Object();//鎖對象public SaleTicket(String name){super(name);}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();while(true){synchronized (o) {if(num > 0){System.out.println(Thread.currentThread().getName()+" 剩余 " +num+"號票");num--;try{sleep(100);}catch (InterruptedException e){e.printStackTrace();}}else{System.out.println("售罄");break;}}}}} public class Demo {public static void main(String[] args) {// TODO Auto-generated method stub//創(chuàng)建三個線程,模擬窗口SaleTicket s1 = new SaleTicket("窗口1");SaleTicket s2 = new SaleTicket("窗口2");SaleTicket s3 = new SaleTicket("窗口3");s1.start();s2.start();s3.start();}}

總結(jié)

以上是生活随笔為你收集整理的13.8 线程的安全问题和解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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