使用Synchronized塊同步變量
我們可以通過synchronized塊來同步特定的靜態(tài)或非靜態(tài)方法。要想實現(xiàn)這種需求必須為這些特性的方法定義一個類變量,然后將這些方法的代碼用synchronized塊括起來,并將這個類變量作為參數(shù)傳入synchronized塊。下面的代碼演示了如何同步特定的類方法package mythread;
2.
3.public class SyncThread extends Thread
4.{
5. private static String sync = "";
6. private String methodType = "";
7.
8. private static void method(String s)
9. {
10. synchronized (sync)
11. {
12. sync = s;
13. System.out.println(s);
14. while (true);
15. }
16. }
17. public void method1()
18. {
19. method("method1");
20. }
21. public static void staticMethod1()
22. {
23. method("staticMethod1");
24. }
25. public void run()
26. {
27. if (methodType.equals("static"))
28. staticMethod1();
29. else if (methodType.equals("nonstatic"))
30. method1();
31. }
32. public SyncThread(String methodType)
33. {
34. this.methodType = methodType;
35. }
36. public static void main(String[] args) throws Exception
37. {
38. SyncThread sample1 = new SyncThread("nonstatic");
39. SyncThread sample2 = new SyncThread("static");
40. sample1.start();
41. sample2.start();
42. }
43.}
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |