gpt4 book ai didi

java - 这段代码是否意味着我创建了 10000 个线程来运行该函数?

转载 作者:行者123 更新时间:2023-12-02 01:20:11 25 4
gpt4 key购买 nike

我想创建一个多线程函数,这个函数可以完成这项工作吗?我还创建了一个名为 ThreadClass 的子类,它扩展了 Thread 并包含 run();,那么这个 main 函数就在主类中:

public static void main(String [] args) {
ThreadClass function = new ThreadClass();
for(int iThread = 0; iThread < 10000; iThread++) {
function.start();
}
}

最佳答案

ThreadClass function = new ThreadClass();

鉴于您的评论,我认为我们可以将 ThreadClass 视为与 Thread 此处“几乎相同”。

然后,您的代码创建一个线程对象。然后您可以多次调用start()。也就是说,根本不“有效”(例如,参见here)。

因此,从这个角度来看:您的代码创建了一个线程,然后执行了一些不应该执行的操作。

现在,如果你这样做了:

for(int iThread = 0; iThread < 10000; iThread++) {
ThreadClass function = new ThreadClass();
function.start();

每个循环创建一个线程对象,那么您将创建 10K 线程。然后会发生什么......很大程度上取决于。如果所有这些线程都保持 Activity 状态并执行一些实际工作,那么很可能您的机器将崩溃,或者某些操作系统限制将启动并阻止您的 JVM 创建超出应有数量的线程。

假设您自己的类只是扩展 Thread,我会假设:您没有覆盖 Thread run() 方法。因此,所有这些线程都会启动、不执行任何操作,然后结束。您会造成大量流失,但根据操作系统和硬件的不同,即使是真正创建 10K 线程的修改版本也可能表现良好。它不会做任何有用的事情。只是 JVM 要求底层操作系统创建一个线程,调用它,然后很快就删除它。

关于java - 这段代码是否意味着我创建了 10000 个线程来运行该函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57845306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com