Python中的"事件"等同于Java?

shi*_*har 6 python java multithreading

Java中最接近线程的东西(也许是成语)是什么?

aka*_*okd 7

该/ .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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请不要建议wait()和notify().有人可能会用它们. (8认同)