提供两种常见的方法: 1.线程B持有线程A的Thread对象的引用(假设为ta),线程A调用Thread.sleep(3600*1000)休眠一小时,线程B在3秒后调用ta.interrupt(),线程A被唤醒并且sleep方法抛出一个InterruptedException。 2.线程A、B持有一个相同对象的引用(假设为ox),线程A使用这个代码,将在wait处阻塞一小时: synchronized(ox) { try { ox.wait(1000*3600); } catch (InterruptedException e) { e.printStackTrace(); } } 线程B在三秒后执行这段代码: synchronized(ox) { ox.notify(); } 线程A被唤醒,且不抛出InterruptedException。
synchronized(ox) { try { ox.wait(1000*3600); } catch (InterruptedException e) { e.printStackTrace(); } }
synchronized(ox) { ox.notify(); }
AB 同时开启,如果B3s后即唤醒A ,那么A休眠1小时也就无从谈起了 能说明白点吗
62,614
社区成员
307,327
社区内容
加载中
试试用AI创作助手写篇文章吧