请教大家一个检测变量和播放视频的问题,谢谢(请各位高手帮忙)
有两个类一个类是activity,另一个类是Handler。
现在Handler里有个变量在实时变化,1和0的变化,我想要实现在activity类里检测Handler中变量的变化的变化。
如果检测变量变为一,那么播放一个视频,否则不做任何反应。
我查了网上说用观察者模式或者线程监控。。。一直没有实现。。。请各位大牛贴个代码模板呗,谢谢。
*********************************************************************
另外,能不能直接在Handler类里直接调用视频呢?如果可以,请教详细步骤,谢谢 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 可以这样
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();
}
}
补充:Java , Java EE