首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python "Event“在Java中的等价物?

Python "Event“在Java中的等价物?
EN

Stack Overflow用户
提问于 2009-06-24 20:32:53
回答 2查看 1.3K关注 0票数 7

Java语言中最接近Python语言中的threading.Event的东西(可能是一种习惯用法)是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-24 20:34:08

The Object.wait() Object.notify()

或者用于Java 5+的Condition.await()Condition.signal()

编辑:因为python规范与我们通常等待Java实现的方式类似,所以如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
class Event {
    Lock lock = new ReentrantLock();
    Condition cond = lock.newCondition();
    boolean flag;
    public void doWait() throws InterruptedException {
        lock.lock();
        try {
            while (!flag) {
                cond.await();
            }
        } finally {
            lock.unlock();
        }
    }
    public void doWait(float seconds) throws InterruptedException {
        lock.lock();
        try {
            while (!flag) {
                cond.await((int)(seconds * 1000), TimeUnit.MILLISECONDS);
            }
        } finally {
            lock.unlock();
        }
    }
    public boolean isSet() {
        lock.lock();
        try {
            return flag;
        } finally {
            lock.unlock();
        }
    }
    public void set() {
        lock.lock();
        try {
            flag = true;
            cond.signalAll();
        } finally {
            lock.unlock();
        }
    }
    public void clear() {
        lock.lock();
        try {
            flag = false;
            cond.signalAll();
        } finally {
            lock.unlock();
        }
    }
}
票数 9
EN

Stack Overflow用户

发布于 2009-06-24 21:30:39

一个related thread。在公认的答案上有一个评论,它建议使用SemaphoreLatch。与上述实现的语义不同,但很方便。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1040818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档