執行緒範圍內共享資料的例子

2021-09-01 13:33:23 字數 1346 閱讀 4867

設計四個執行緒,其中兩個執行緒每次給增加j增加一,另外兩個給j減一。

/** * 設計四個執行緒,其中兩個執行緒每次給增加i增加一,另外兩個給i減一。

* 方式一:呼叫兩個繼承了runnable類的類進行資料的加減操作

*/public class threadscopedatatest

static class incre implements runnable

@override

public void run() }}

static class decre implements runnable

@override

public void run() }}

}方式二

package martina.traditionalthread;

/** * 設計四個執行緒,其中兩個執行緒每次給增加i增加一,另外兩個給i減一。

* 將操作放在乙個類中,用兩個執行緒實現類中的兩個方法

*/public class threadscopedatatest01

}).start();

new thread(new runnable()

}).start();

}}class shareddata1

}public static void drecrease()}}

方式三:將實現加減操作的類放在main方法的類中(也就是內部類的實現)

但是以上方法都沒有實現加減操作的輪替執行。

標答:

package martina.traditionalthread;

/** * 設計四個執行緒,其中兩個執行緒每次給增加i增加一,另外兩個給i減一。

*/public class threadscopedatatest02

}synchronized void incre()

synchronized void decre()

class incre implements runnable

@override

public void run() }}

class decre implements runnable

@override

public void run() }}

}

執行緒範圍內共享資料

我們可以先用所學知識來寫乙個 public class threadscopesharedata start static class a static class b 如果光像上面這樣寫的話,那毫無疑問,肯定是有問題的,如下圖所示並沒有實現執行緒共享 此時就實現執行緒內共享資料了 public c...

執行緒範圍內共享資料

假設現在有個公共的變數data,有不同的執行緒都可以去操作它,如果在不同的執行緒對data操作完成後再去取這個data,那麼肯定會出現執行緒間的資料混亂問題,因為a執行緒在取data資料前可能b執行緒又對其進行了修改,下面寫個程式來說明一下該問題 public class threadscopesh...

執行緒範圍內共享資料ThreadLocal

原始碼 private t setinitialvalue 1 原始版本 public class threadlocaltestbefore start new thread new runnable start a b類分別為使用執行緒區域性變數的資料 static class a static...