gpt4 book ai didi

java - 线程作为 Java 对象

转载 作者:行者123 更新时间:2023-12-01 10:17:04 26 4
gpt4 key购买 nike

我想要一个继承自Thread的对象集合;每个对象都在它自己的线程中运行。

我尝试了extends Thread并调用了super(),认为这样可以确保创建一个新线程;但没有...只有 main 是正在运行的线程:(

每个人都告诉我,“实现 Runnable 将您想要的代码放入 run() 并将其放入线程对象中”。我无法执行此操作,原因有两个:

  1. 我的集合元素不是 Thread 类型,如果我进行多态,我将必须更改它的所有依赖项。

  2. run() 不能包含整个类...对吗?

所以我首先想知道,我想做的事情是否可能,并且其次,如果可以的话,怎么办?

最佳答案

super() 仅调用父构造函数(在您的情况下为默认的 Thread 构造函数)。实际启动新线程的方法是start()。正如其他人所说,扩展Thread是糟糕的设计。

是的,您可以创建一个实现Runnable的类

class MySpecialThread implements Runnable {
public void run() {
// Do something
}
}

您可以像这样在新线程中启动它:

Thread t = new Thread(new MySpecialThread());
// Add it to a collection, track it etc.
t.start(); // starts the new thread

1- 您可以使用 Runnables 集合 Thread 集合(使用下面的示例)。

MySpecialThread m = new MySpecialThread();
List<Runnable> runnables = new ArrayList<Runnable>();
runnables.add(m);
List<Thread> threads = new ArrayList<Thread>();
threads.add(new Thread(m));

2- 方法不能包含类,但上面的示例MySpecialThread是一个行为类似于任何其他类的类。您可以编写构造函数、添加方法和字段等。

关于java - 线程作为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835324/

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