我有一个Java多线程文件搜寻器,我正在做一个问题。我的问题是,我有一个workQueue,它是一个linkedBlockingQueue,它包含我想要用我的线程爬过的文件的名称,每个线程将从workQueue中take()
,并在扫描整个文件的同时可能会将put()
另一个文件名放入workQueue(这是一个依赖检查程序)。所以我从来没有真正确定什么时候工作全部完成,并且所有线程最终都会进入等待状态,当他们尝试从(最终)空workQueue中尝试take()
时。初学者Java多线程问题
所以我想我的问题是,是否有一种有效的方法来终止所有的线程(当所有的线程都进入等待状态时)?目前我只在主线程上使用sleep()
,然后在所有的工作线程中使用interrupt()
。
对不起,如果这个问题听起来很混乱。
真诚的thanx为downvotes人。但是在上帝的名下,请留下评论为什么这是不好的,所以我们都学习。 – JayC667
不确定downvotes,但我会用ExecutorService管理线程。 –