多线程如何在Java中实现多线程
我必须对一个方法进行多线程处理,该方法可以成批运行1000个代码。我需要将这些批给不同的线程
目前我有3个线程,但所有3个线程都在挑选第一批1000个。 我希望其他批次不应选择同一批次,而应选择其他批次
请提供帮助和建议
你可以在下面搜索框中键入要查询的问题!
我必须对一个方法进行多线程处理,该方法可以成批运行1000个代码。我需要将这些批给不同的线程
目前我有3个线程,但所有3个线程都在挑选第一批1000个。 我希望其他批次不应选择同一批次,而应选择其他批次
请提供帮助和建议
# 1 楼答案
检索批时使用
lock
或mutex
。这样,线程就不能同时访问关键部分,也不能意外地访问同一批我假设你正在移除一批被一根线拾取的产品
编辑:艾奥贝和乔纳斯的答案更好,用这个。这是另一种选择。:)
# 2 楼答案
您需要同步对批处理中作业列表的访问。(“同步”本质上意味着“确保线程知道潜在的竞争条件”。在大多数情况下,这意味着“让某个方法一次由单个线程执行”。)
这是使用} 的各种实现,例如^{} 或^{}
java.util.concurrent
包最容易解决的问题。看看^{# 3 楼答案
我会使用一个服务
# 4 楼答案
将批放在^{} 中,并使工作线程从队列中获取批