《java中synchronized用法》这篇文章中的错误
刚刚看了《java中synchronized用法》这篇文章(网址为http://blog.csdn.net/chenguang79/article/details/677720),使用了一下它的第一个例子,结果电脑就卡住了,查看任务管理器后发现java.exe这个进程占了99%CPU,仔细一看程序,发现run()方法中的while循环没有跳出语句...囧,在39行的}后加上else break;语句就行了。
1 public class TextThread
2 {
3
4 /**
5 * @param args
6 */
7 public static void main(String[] args)
8 {
9 // TODO 自动生成方法存根
10 TxtThread tt = new TxtThread();
11 new Thread(tt).start();
12 new Thread(tt).start();
13 new Thread(tt).start();
14 new Thread(tt).start();
15 }
16
17 }
18 class TxtThread implements Runnable
19 {
20 int num = 100;
21 String str = new String();
22 public void run()
23 {
24 while (true)
25 {
26 synchronized(str)
27 {
28 if (num>0)
29 {
30 try
31 {
32 Thread.sleep(10);
33 }
34 catch(Exception e)
35 {
36 e.getMessage();
37 }
38 System.out.println(Thread.currentThread().getName()+ "this is "+ num--);
39 }
40 }
41 }
42 }
43 }