首页上一页 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张票
为什么同步块没起作用呢?问题出在哪?

购物车
发表新帖
立即签到








