67,515
社区成员
发帖
与我相关
我的任务
分享
public class Activity implements Runnable{
private Condition playCondition;
private Lock lock;
public Activity(Lock lock, Condition playCondition){
this.playCondition = playCondition;
this.lock = lock;
}
@Override
public void run() {
while (true){
lock.lock();
try {
this.playCondition.await();
play();
} catch (InterruptedException ex) {
ex.printStackTrace();
} finally {
lock.unlock();
}
}
}
private void play(){
System.out.println("play");
}
}
public class Handler implements Runnable{
private Condition playCondition;
private Lock lock;
private boolean var = true;
public Handler(Lock lock, Condition playCondition){
this.playCondition = playCondition;
this.lock = lock;
}
private boolean change(boolean toChange){
return !toChange;
}
@Override
public void run() {
while (true){
lock.lock();
try {
var = change(var);
if (var == true){
playCondition.signalAll();
lock.unlock();
Thread.sleep(5000);
}else{
lock.unlock();
Thread.sleep(10000);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
lock.unlock();
}
}
}
public static void main(String... args){
final Lock lock = new ReentrantLock();
final Condition playCondition = lock.newCondition();
new Thread(new Activity(lock, playCondition)).start();
new Thread(new Handler(lock, playCondition)).start();
}
}