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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[javaSE] 看博客学习java并发编程

發布時間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [javaSE] 看博客学习java并发编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

共享性

多線程操作同一個數據,產生線程安全問題

新建一個類ShareData

設計一個int 型的成員變量count

設計一個成員方法addCount(),把count變量++

在main函數中開啟多個線程操作這個成員變量,在main函數里

獲取ShareData對象,new 出來

?

使用for循環10次,在循環中開啟線程,模擬10個線程并發,在循環內

獲取Thread對象,new出來,構造函數參數:Runable對象

匿名內部類實現Runable接口,重寫run()方法

調用Thread.sleep(1000),使線程睡眠一秒,增加出現問題的概率

使用for循環100次,調用addCount()方法

?

調用Thread.sleep(3),主程序睡眠3秒,保證上面的線程全部執行完了

打印count變量

?

調用Thread對象的start()方法

package com.tsh.mthread;public class Home {public int count;public static void main(String[] args) {final Home home = new Home();for (int i = 0; i < 10; i++) {Thread t = new Thread(new Runnable() {@Overridepublic void run() {for (int j = 0; j < 100; j++) {home.addCount();}try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}System.out.println(Thread.currentThread()+":"+home.count);}});t.start();}// 睡三秒等等上面的try {Thread.sleep(3000);} catch (Exception e) {e.printStackTrace();}System.out.println("總計:" + home.count);}public void addCount() {count++;} }

?

互斥性

使用synchronized關鍵字修飾上面的addCount()方法,當前線程操作時加把鎖,同時只允許一個訪問者對資源進行訪問,具有唯一性和排他性

public synchronized void addCount() {count++;}

?

使用synchronized修飾代碼塊

public void addCount() {synchronized (this) {count++;}}

?

轉載于:https://www.cnblogs.com/taoshihan/p/5431636.html

總結

以上是生活随笔為你收集整理的[javaSE] 看博客学习java并发编程的全部內容,希望文章能夠幫你解決所遇到的問題。

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