当前位置:编程学习 > JAVA >>

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

有两个类
一个类是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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,