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 - 需要从n个数字的输出中读取最后一个值

python - 如何在python27的数据框中的行中找到Common元素

java - 中断tomcat线程是否安全

java - JSP目录结构

java - 使用android Geofire获取经度和纬度

python - Swig [C-> Python]:如何处理原始类型的输入或输出函数参数?

java.lang.Thread.setPriority 与 android.os.Process.setThreadPriority

c# - Windows 窗体 : UI threads flow with Show() and ShowDialog()

java - 有什么方法可以使用Substance从JMenuBar删除此搜索图标和栏吗?

python - 如何在numpy数组中XYZ位置的csv文件中插入浮点值