生产者、消费者

public class Storage {
    private LinkedList<String> mStringLinkedList = new LinkedList<>();
    private int MAX = 10;
    private static final String TAG = "zhoumao";

    public void consume() {
        synchronized (mStringLinkedList) {
            while (mStringLinkedList.size() == 0) {
                try {
                    Log.d(TAG, "consume: " + mStringLinkedList.size());
                    mStringLinkedList.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            Log.d(TAG, "consume: " + mStringLinkedList.remove());
            mStringLinkedList.remove();
            mStringLinkedList.notifyAll();
        }
    }

    public void product() {
        synchronized (mStringLinkedList) {
            while (mStringLinkedList.size() == MAX) {
                try {
                    Log.d(TAG, "product: " + mStringLinkedList.size());
                    mStringLinkedList.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            Log.d(TAG, "product: " + mStringLinkedList.add("abc"));
            mStringLinkedList.add("abc");
            mStringLinkedList.notifyAll();
        }
    }
}
public class Consumer extends Thread {
    Storage mStorage;

    public Consumer(Storage storage) {
        this.mStorage = storage;
    }

    @Override
    public void run() {
        mStorage.consume();
    }
}
public class Productor extends Thread {

    Storage mStorage;

    public Productor(Storage storage) {
        this.mStorage = storage;
    }

    @Override
    public void run() {
        mStorage.product();
    }
}

测试代码

     Storage storage=new Storage();
        new Consumer(storage).start();
        new Productor(storage).start();
        for (int i =0;i<10;i++){
            new Productor(storage).start();
        }
        new Consumer(storage).start();
        new Productor(storage).start();
        new Consumer(storage).start();
        new Productor(storage).start();

附:
如何处理InterruptedException异常

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容