[javaSE] 看博客学习java并发编程
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                [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并发编程的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: vivado在远程服务器上完成本地设备的
 - 下一篇: FPGA串口(UART)通信协议制定与设