定义一个TicketTest.java文件,文件中的代码如下:
public class TicketTest {
public static void main(String[] args) {
Ticket ticket = new Ticket(100);
Runnable task = ()->{
while (true){
ticket.sellTicket();
}
};
Thread t1 = new Thread(task);
t1.setName("窗口1");
Thread t2 = new Thread(task);
t2.setName("窗口2");
Thread t3 = new Thread(task);
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
class Ticket {
private int number;
public Ticket(int number) {
this.number = number;
}
public synchronized void sellTicket() {
System.out.println(Thread.currentThread().getName()+"拿到sellTicket锁");
try {
Thread.currentThread().wait(10); // 释放锁
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这段代码运行以后,会报java.lang.IllegalMonitorStateException的异常,就是在wait(10)这里报的错,不明白,wait方法是在synchronized方法中执行的,线程有锁啊,为什么会报这个错误,青椒一下