設計四個執行緒,其中兩個執行緒每次給增加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...