请教大家一个检测变量和播放视频的问题,谢谢(请各位高手帮忙)

point_net 2013-06-03 04:43:14
有两个类
一个类是activity,另一个类是Handler。

现在Handler里有个变量在实时变化,1和0的变化,我想要实现在activity类里检测Handler中变量的变化的变化。

如果检测变量变为一,那么播放一个视频,否则不做任何反应。

我查了网上说用观察者模式或者线程监控。。。一直没有实现。。。请各位大牛贴个代码模板呗,谢谢。

*********************************************************************
另外,能不能直接在Handler类里直接调用视频呢?如果可以,请教详细步骤,谢谢
...全文
55 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yktd26 2013-06-03
  • 打赏
  • 举报
回复
可以这样

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();
    }
    
}

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧