2 回答
TA贡献1865条经验 获得超7个赞
Point 2:如果线程是船,它应该在河的一侧取车,在另一岸卸车。看起来银行上汽车的最自然表示是船上汽车的 BlockingQueue 和 ArrayList。通常,始终首先考虑 BlockingQueue。
第 3 点:这通常由同步方法或ReentrantLocks完成。
TA贡献1790条经验 获得超9个赞
原子变量
原子变量使用 CAS 算法进行,它们可以被多个线程安全地使用:
案件 :
典型的 CAS 操作对三个操作数起作用: 操作的内存位置 (M) 变量的现有期望值 (A) 需要设置的新值 (B) CAS 操作将 M 中的值原子更新为B,但仅当 M 中的现有值与 A 匹配时,否则不采取任何行动。
您可以使用可用于交换的交换器,在两个线程之间交换一些信息
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Exchanger.html
阻塞队列是您提到的消费者生产者模型,因此要使用它,您需要创建两个线程,一个将是生产者,它将放入阻塞队列,消费者将从中消费(读取)。BlockingQueue的实现有很多,
这里有更详细的信息:
http://tutorials.jenkov.com/java-util-concurrent/blockingqueue.html
所以从你的名单上都是他们的地方。
您也可以在这里了解有关 java.util.concurrent 的内容,我认为这会有所帮助:
http://tutorials.jenkov.com/java-util-concurrent/index.html
添加回答
举报