上面代码中, 使用CyclicBarrier控制两个线程, 运行程序, 由于执行了 barrier.reset(); 方法, 此时, T1线程处于 await 状态, 所以会抛出BrokenBarrierException, 控制台也会输出异常栈信息. 查看进程栈信息, 如下:
T2 线程处于 waiting on condition 状态. 看了CyclicBarrier的源码, 当执行reset()方法时, 会调用signalAll()唤醒等待中的线程, 这样一来, 这个线程会一直等下去.想问一下: 这种情况应该怎么处理, 怎样处理T2的等待.
T2 线程处于 waiting on condition 状态. 看了CyclicBarrier的源码, 当执行reset()方法时, 会调用signalAll()唤醒等待中的线程, 这样一来, 这个线程会一直等下去.想问一下: 这种情况应该怎么处理, 怎样处理T2的等待.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货