java - 如何用不同的值初始化每个线程

标签 java multithreading

我需要创建三个具有不同数据的线程。我希望一个线程值不会影响另一个线程值,但这里一个线程值修改另一个线程变量值。我不知道该怎么办。

这是我的示例类,它创建三个线程并用不同的值初始化变量。

public class One {

public void processChange(final String  userdata)
{
    Two Thread1=null,Thread2=null,Thread3=null;
    data.put("type","one");
    Thread1=new Two(data);
    Thread1.setName("one");
    Thread1.start();

    data.put("type","two");
    Thread2=new Two(data);
    Thread2.setName("two");
    Thread2.start();

    data.put("type","three");
    Thread3=new Two(data);
    Thread3.setName("three");
    Thread3.start();    


}
}

扩展Thread的另一个类

 public class Two extends Thread {

JSONObject data;

public Two(JSONObject data) {
this.data=data;
}
public Two() {
}

public void run()
{
        log.debug(this.getName()+" and data is"+data.toString());
        sendData(data);
        log.debug("after running "+this.getName()+" and data is"+data.toString());  
}
 }

执行上面的代码后。最后初始化jsonObject数据值包含所有线程。 我希望每个具有 jsonOjbect 数据的线程都不同

最佳答案

这样做。您需要为每个线程创建不同的 JSONObject。

JSONObject data1 = new JSONObject();
data1.put("type","one");
Thread1=new Two(data1);
Thread1.setName("one");
Thread1.start();

JSONObject data2 = new JSONObject();
data2.put("type","two");
Thread2=new Two(data2);
Thread2.setName("two");
Thread2.start();

关于java - 如何用不同的值初始化每个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20348914/

相关文章:

java - 如何将 HashMap<Integer,ArrayList<String>> 存储到 SQLite?

android - 在工作线程中创建 View

wpf - WPF中的多线程

java - 如何检查当前线程是否不是主线程

java - Android,退出/暂停应用程序,如何销毁线程

java - 有没有办法根据包中的所有 java 源文件生成哈希值,然后在运行时在日志消息中使用该值?

java - 重写 servlet 中的 doGet

c - 如果函数中已有线程,如何防止线程进入该函数?

java - java.util.concurrent类如何重用线程?

c# - C# 中的简单线程