小编vij*_*jay的帖子

Java同步 - Mutex.wait与List.wait

在使用Java Threading Primitives构建线程安全的有界队列时 - 这两个构造之间的区别是什么

  1. 创建显式锁对象.
  2. 使用列表作为锁并等待它.

例1

private final Object lock = new Object();
private ArrayList<String> list = new ArrayList<String>();

public String dequeue() {
    synchronized (lock) {
        while (list.size() == 0) {
            lock.wait();
        }

        String value = list.remove(0);
        lock.notifyAll();
        return value;
    }
}    

public void enqueue(String value) {
    synchronized (lock) {
        while (list.size() == maxSize) {
            lock.wait();
        }

        list.add(value);
        lock.notifyAll();
    }
}
Run Code Online (Sandbox Code Playgroud)

例2

private ArrayList<String> list = new ArrayList<String>();

public String dequeue() {
    synchronized (list) {  // lock on …
Run Code Online (Sandbox Code Playgroud)

java synchronization

4
推荐指数
1
解决办法
3292
查看次数

标签 统计

java ×1

synchronization ×1