混还是躺 混还是躺
关注数: 22 粉丝数: 33 发帖数: 3,320 关注贴吧数: 46
菜鸟刚开始学,有大佬帮忙看下代码为什么报错吗. 代码: mport java.util.concurrent.locks.ReentrantLock; import static java.lang.Thread.sleep; public class WaitNotify { public static void main(String[] args) { Ticket t1 = new Ticket(); Thread thread1 = new Thread(t1, "线程1"); Thread thread2 = new Thread(t1,"线程2"); Thread thread3 = new Thread(t1,"线程3"); thread3.start(); thread1.start(); thread2.start(); } } class Ticket implements Runnable{ static int ticket = 100 ; private final static ReentrantLock lock = new ReentrantLock(); @Override public void run() { while (true) { lock.lock(); try { lock.notifyAll(); if (ticket > 0) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "剩余票数:" + ticket--); }else{ break; } try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } finally { lock.unlock(); } ticket--; } 报错: Exception in thread "线程2" Exception in thread "线程1" Exception in thread "线程3" java.lang.IllegalMonitorStateException: current thread is not owner at java.base/java.lang.Object.notifyAll(Native Method) at Ticket.run(WaitNotify.java:26) at java.base/java.lang.Thread.run(Thread.java:831) java.lang.IllegalMonitorStateException: current thread is not owner at java.base/java.lang.Object.notifyAll(Native Method) at Ticket.run(WaitNotify.java:26) at java.base/java.lang.Thread.run(Thread.java:831) java.lang.IllegalMonitorStateException: current thread is not owner at java.base/java.lang.Object.notifyAll(Native Method) at Ticket.run(WaitNotify.java:26) at java.base/java.lang.Thread.run(Thread.java:831) }
1 下一页