gpt4 book ai didi

java - 如何将变量的值分配给线程以及何时应该这样做?

转载 作者:行者123 更新时间:2023-12-02 07:41:23 25 4
gpt4 key购买 nike

我是处理多线程的新手。我对某一点感到困惑并寻求澄清。我在主程序中有以下内容:

String hostname = null;
ExecutorService threadExecutor = Executors.newFixedThreadPool(10);
MyThread worker = null;

while(resultSet.next()) {
hostname = resultSet.getString("hostName");
worker = new MyThread(hostname);
threadExecutor.execute( worker );
}

threadExecutor.shutdown();

while (!threadExecutor.isTerminated()) {
threadExecutor.awaitTermination(1, TimeUnit.SECONDS);
}

实现runnable的类是:

public class MyThread implements Runnable{
String hostname=null;

MyThread (String hostname) {
this.hostname=hostname;
System.out.println("New thread created");
}

public void run() {
Class1 Obj1 = new Class1();
try {
obj1.Myfunction(hostname);
} catch (Exception e) {
System.out.println("Got an Exception: "+e.getMessage());
}
}
}

我有一个名为主机名的变量。每个线程都需要获取这个变量,因为它必须传递给每个线程需要执行的函数Myfunction

我在构造函数中定义了一个名为 hostname 的变量。然后我将变量 hostname 发送到 MyFunction(hostname)。 由于 hostname 是在类 MyThread 中定义的,那么作为参数发送给 Myfunction 的主机名是线程的主机名。

我不知道是否需要我做这个作业this.hostname=hostname?我什么时候需要写this.这个词?我是否需要使用 this. 一词将主机名发送到 Myfunction?

最佳答案

您必须在构造函数中使用 this.hostname,因为您有一个也名为 hostname 的参数,因此如果您不使用 this 您只是将参数的值存储在参数本身中。

run 中,您不必使用 this,因为函数范围内没有其他同名变量。

另请参阅When should I use "this" in a class?Java - when to use 'this' keyword

关于java - 如何将变量的值分配给线程以及何时应该这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11540656/

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