java - Python "Event"等同于 Java?

标签 java python multithreading

Java 中最接近 threading.Event 的东西是什么(也许是成语)在 Python 中?

最佳答案

Object.wait() Object.notify()/Object.notifyAll() .

Condition.await()Condition.signal()/Condition.signalAll()适用于 Java 5+。

编辑:因为 python 规范与我们通常等待 Java 实现的方式类似:

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

关于java - Python "Event"等同于 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1040818/

相关文章:

java - 这是编写异步迭代器的正确方法吗?

java - ORMLite - 更新没有空值

wpf - Linq 数据上下文和 "unit of work"

c++ - par_unseq 和 "vectorization-unsafe"函数

python - 如何将线程添加到 PyQt5 GUI?

javascript - 在java servlet中接收javascript数组

java - Axis2 可以从普通的旧 Java 程序公开 Web 服务吗?

python - python元组赋值顺序是固定的吗?

python - 在 GAE 中使用 matplotlib

python - 为什么舱口不显示?