gpt4 book ai didi

java - 带字符串参数的线程构造函数有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:22 25 4
gpt4 key购买 nike

查看 Thread 构造函数,我看到有一个采用单个字符串参数。我有下面的代码,这有点没用。我想知道,如何有效地使用这个构造函数并使某些东西真正运行

public class ThreadTest {
public static void main(String[] args) {
Thread t = new Thread("abc");
t.start();
System.out.println("Complete");
}
}

或者它不应该像我上面演示的那样使用吗?

我完全知道如何编写多线程和执行 :),我只是想了解这个构造函数的正确用法?它是否应该仅通过扩展 Thread 调用 super(name) 而不是我上面使用它的方式来使用。

最佳答案

线程类本身并没有做那么多。您必须围绕可运行对象扩展它或构建它,以使其在运行时执行任务。来自文档:

start():“使该线程开始执行;Java 虚拟机调用该线程的运行方法。”

run():“如果此线程是使用单独的 Runnable run 对象构造的,则调用该 Runnable 对象的 run 方法;否则,此方法不执行任何操作并返回。”

因此,以您的方式构建一个新线程并启动它什么也不做。 Thread(String) 构造函数的一种用途是在子类中:

public class Worker extends Thread{

public Worker(int numb){
super("worker-"+numb);
}

@Override
public void run(){
//Stuff this thread actually does when run
//....
for(int i = 0; i < 10; i++)
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}

要回答评论中的第二个问题,这就是您编写并行执行代码的方式。考虑上面的类加上这个主要方法:

public static void main(String[] args){
Worker w1 = new Worker(1);
Worker w2 = new Worker(2);
w1.start();
w2.start();
}

w1和w2的run方法会并行执行。打印语句的顺序在 main 方法的执行过程中会有所不同。

关于java - 带字符串参数的线程构造函数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208171/

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