我想实现多线程队列as in this example
但是我的问题是要了解完整的模型。
为了让每个线程都可以将线程推入/弹出到同一队列中,我必须使SafeQueue成为Singleton。这是正确的吗?
并且比我需要一些线程安全的单例初始化吗?
它应该像这样:
____________
| |
| Thread 1 | ---------
|__________| |
|
____________ ----------> ____________
| | | |
| Thread 2 | ------------------> | Queue |
|__________| |__________|
--------->
____________ |
| | |
| Thread 3 |-----------
|__________|
还是我应该在创建线程之前启动队列并将Queue-Object传递到每个单独的线程中?
答案 0 :(得分:3)
正如@ some-programmer-dude所指出的那样,您没有被强制使用单例,而只是在所有感兴趣的线程之间共享队列的相同实例。因此,首先创建队列,然后创建应该访问队列的线程。
然后,进行并发。容器线程安全性有两个方面,而队列肯定是容器: