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

歡迎訪問 生活随笔!

生活随笔

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

java

java线程统一_Java线程结果不一致

發布時間:2023/12/1 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程统一_Java线程结果不一致 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個實現可運行的線程類和一個int計數器作為實例變量。兩種同步方法add和sub。當我以某種方式運行測試類時,它幾次會輸出錯誤的結果。據我了解,當方法同步時,整個對象將被鎖定以供其他線程訪問,這種邏輯每次我們都應該獲得相同的結果正確嗎?事實并非如此。我想念什么嗎?

我的機器是Windows 7、64位。

public class ThreadClass implements Runnable {

int counter = 0;

@Override

public void run() {

add();

sub();

}

public synchronized void add() {

System.out.println("ADD counter" + (counter = counter + 1));

}

public synchronized void sub() {

System.out.println("SUB counter" + (counter = counter - 1));

}

}

測試類

public class ThreadTest {

public static void main(String args[]) {

ThreadClass tc = new ThreadClass();

Thread tc0 = new Thread(tc);

tc0.start();

tc0.setPriority(Thread.MAX_PRIORITY);

Thread tc1 = new Thread(tc);

tc1.start();

tc1.setPriority(Thread.NORM_PRIORITY);

Thread tc2 = new Thread(tc);

tc2.start();

tc2.setPriority(Thread.MIN_PRIORITY);

}

}

結果

ADD counter1

ADD counter2

SUB counter1

SUB counter0

ADD counter1

SUB counter0

注意: 您可能需要進行幾次運行才能產生這種不一致。

總結

以上是生活随笔為你收集整理的java线程统一_Java线程结果不一致的全部內容,希望文章能夠幫你解決所遇到的問題。

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