首页上一页 1 下一页尾页 1 条记录 1/1页
多线程同步块的问题
发表在Java图书答疑
2019-07-25
《Java从入门到精通(第4版)》第18章 多线程
是否精华
是
否
版块置顶:
是
否
源代码如下:
public class ThreadTest extends Thread { private static int COUNT=10; private static int I=0; private String name; public ThreadTest(String name) { this.name=name; } public static void main(String[] args) throws Exception { new ThreadTest("线程A").start(); new ThreadTest("线程B").start(); new ThreadTest("线程C").start(); } @Override public void run() { while (COUNT>0) { synchronized (this) { try { COUNT--; I++; System.out.println(I+". "+name+"售出一张票,还剩"+COUNT+"张票"); Thread.sleep(200); } catch (Exception e) { e.printStackTrace(); } } } } }
输出结果:
2. 线程A售出一张票,还剩8张票
2. 线程B售出一张票,还剩8张票
3. 线程C售出一张票,还剩7张票
5. 线程C售出一张票,还剩5张票
4. 线程A售出一张票,还剩5张票
4. 线程B售出一张票,还剩5张票
6. 线程C售出一张票,还剩3张票
7. 线程A售出一张票,还剩3张票
6. 线程B售出一张票,还剩3张票
8. 线程C售出一张票,还剩1张票
8. 线程A售出一张票,还剩1张票
9. 线程B售出一张票,还剩1张票
10. 线程B售出一张票,还剩0张票
为什么同步块没起作用呢?问题出在哪?