【发布时间】:2011-07-27 09:14:39
【问题描述】:
例如,我需要始终运行 100 个线程来执行某些操作。
我有一个名为ThreadsWorker 的类,它会查找线程数并在之前的某些线程完成时运行丢失的线程。
所以,这是描述情况的表格:
1 second: 100 threads
2 second: 92 threads (ThreadsWorker generates new 8 threads)
3 second: 100 theads
4 second: 72 threads (ThreadsWorker generates 28 threads)
等等。
我的线程是匿名调用(只是new Thread(new Runnable(...)).start()),因为我不知道如何正确地将它们保存到Threads[] 数组,因为虽然ThreadsWorker 将保存threads[i] = new Threads(),但一些线程可能已经完成,然后会有一些与数组索引冲突。
由于匿名调用,我现在使用threadsCount 变量,并在线程主体开始时递增,在线程主体结束时递减(使用synchronized)。好的,它可以正常工作,我的唯一方法是使用while() 循环,当进度完成时检查threadsCount == 0。
我认为这是 C 风格但不是 Java 方式 :) 那么,你能帮我用 Java 方式做吗?
【问题讨论】:
标签: java multithreading parallel-processing