我如何将线程用作对象?我试图这样做。
对象类
public class Object implements Runnable{
public String name = "";
public void run(){
//logic code here
}
}
我这样称呼它。
Thread contract1 = new Thread(new Object());
contract1.name = "foo";
contract1.start();
我收到错误
The field Thread.name is not visible
使用最短的代码量,最有效的方法是什么?
感谢。
答案 0 :(得分:5)
mapValues
然后
public class YourRunnable implements Runnable{
private String name;
public YourRunnable(String name) {
this.name = name;
}
public void run() {
//logic code here
}
}
所以使用构造函数。
编辑:但要做你想做的事,你所要做的就是
Thread contract1 = new Thread(new YourRunnable("foo"));
contract1.start();
然后
public class YourRunnable implements Runnable{
public String name;
public void run() {
//logic code here
}
}
答案 1 :(得分:3)
在您的代码中,您尝试更改主题的名称。您真正想要做的是更改线程正在调用的对象的名称。您可以在构造函数中执行此操作,也可以在创建新线程之前声明对象并设置名称。
1)通过创建构造函数:
public class SomeObject implements Runnable{
private String name;
public SomeObject(String name){
this.name = name;
}
...
}
然后声明如下:
Thread contract1 = new Thread(new SomeObject("myNamehere"));
contract1.start();
2)通过设置名称(我认为你打算这样做):
SomeObject contractObject1 = new SomeObject();
contractObject1.name = "myNamehere";
Thread contract1 = new Thread(contractObject1);
contract1.start();