您如何从 java 中的所有线程收集数据?

How do you collect data from all your threads in java?

所以我做了一个扩展 Thread class 的 class 并且我有一个调用 start() 的主 class。 我以这种方式为 运行 我的程序创建了 1000 个线程:

int ThreadNum = 1000;
for(int i=0; i<ThreadNum; i++){
   Thread_Class function = new Thread_Class();// The Thread_Class is the one that extends the Thread class.
function.start();                    }

这会生成 1000 个线程吗?我如何从所有线程收集数据?

非常感谢!!我都很感激!

在你的问题中构建线程的方式很好,但是你正在为循环中的每个迭代旋转一个新的 Thread 这是一个非常糟糕的主意。

构建新线程是一件代价高昂的事情,您必须避免这样做。为了缓解这个问题,制作了 ThreadPool 其中包含 Threads.

您已成功创建 Threads,但它不会 return 值。请注意,start 方法只负责启动线程。您可以在工作时 wait/interrupt 生成的线程。无法 returning 对象。

来自 Runnable

的文档

A Runnable, however, does not return a result and cannot throw a checked exception.

是的,class Thread implements Runnable。您已经创建了 类 extending Thread 的对象。所以行为对你来说是一样的。

替代方法是继续 Callable,如@Ravindra 所回答。

来自 Callable

的文档

A task that returns a result and may throw an exception.

这正是您所需要的。

PS:另外,请注意 future.get() 是一个阻塞调用。并且始终建议将其与超时一起使用。