创建三个MyThread1对象应当随机三个进行输出,不知为何使用sleep之后只有单个线程跑数据
将sleep移动到同步代码块外后就没有该问题,但每次为三个线程同时输出
public class MyThread1 extends Thread {
public MyThread1() {
}
public MyThread1(String name) {
super(name);
}
//这个类的所有对象,都共享ticket数据
static int ticket = 0;//1~100
//锁对象(唯一的)
@Override
public void run() {
while (true) {
synchronized (MyThread1.class) {
if (ticket < 100) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
ticket++;
System.out.println(Thread.currentThread().getName() + "正在卖第" + ticket + "张票");
} else {
break;
}
}
}
}
}