有两个类
一个类是activity,另一个类是Handler。现在Handler里有个变量在实时变化,1和0的变化,我想要实现在activity类里检测Handler中变量的变化的变化。如果检测变量变为一,那么播放一个视频,否则不做任何反应。我查了网上说用观察者模式或者线程监控一直没有实现请各位大牛贴个代码模板呗,谢谢。*********************************************************************
另外,能不能直接在Handler类里直接调用视频呢?如果可以,请教详细步骤,谢谢
一个类是activity,另一个类是Handler。现在Handler里有个变量在实时变化,1和0的变化,我想要实现在activity类里检测Handler中变量的变化的变化。如果检测变量变为一,那么播放一个视频,否则不做任何反应。我查了网上说用观察者模式或者线程监控一直没有实现请各位大牛贴个代码模板呗,谢谢。*********************************************************************
另外,能不能直接在Handler类里直接调用视频呢?如果可以,请教详细步骤,谢谢
解决方案 »
- github报错Permission denied (publickey),求帮助
- 对jsp编码解码过程的疑惑
- 关于C#调用java webservice时传递数据的问题
- md5加密为何要设hexDigits值
- 请教:Tomcat配置数据库连接池的问题
- 初学Hibernate的几个问题
- 求助,一个简单的问题
- 会 javamail 的进来 go go go..........
- 请教JSP调用EntityBean的问题。
- 请高手谈谈用Entity Bean 的体会,到底Entity Bean 有什么优势?我觉得它并没有什么优势啊!
- JDK1.7部分新特性用不了咋回事?
- 使用JUnit测试JPA环境 报错了!
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();
}
}