java中多线程管理队列系统
我有一个请求队列。有两条线。在on thread中,我将项目添加到队列中,第二个线程基本上从队列列表中获取请求并执行它们。所以第二个线程等待第一个线程将一些请求放入列表中。我正在做一个循环。我不认为这是最好的方法。它是CPU密集型的。每当我添加请求时,我可以想出一种通知第二个线程的方法。但是可能会有问题,请求可能无法成功执行,所以我必须再次请求第二个线程来执行请求。 那么你认为有什么办法可以奏效吗
你可以在下面搜索框中键入要查询的问题!
我有一个请求队列。有两条线。在on thread中,我将项目添加到队列中,第二个线程基本上从队列列表中获取请求并执行它们。所以第二个线程等待第一个线程将一些请求放入列表中。我正在做一个循环。我不认为这是最好的方法。它是CPU密集型的。每当我添加请求时,我可以想出一种通知第二个线程的方法。但是可能会有问题,请求可能无法成功执行,所以我必须再次请求第二个线程来执行请求。 那么你认为有什么办法可以奏效吗
# 1 楼答案
你可以利用
Semaphores
来解决这个问题第二个线程,即工作线程,将等待信号量。每次第一个线程将新任务信息推送到
Queue
结构上时,它也会发布到Semaphore
,这样第二个线程就可以安全地执行了如果有多个读写器线程,这可能还需要一些同步
# 2 楼答案
使用Java中可用的阻塞队列之一:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html
实际上,不建议进行繁忙的等待(除非你想用电脑取暖)