我尝试将name参数与Lambda表达式一起传递,但无法使其工作。我解决它的方式是这样的:
Thread t1 = new Thread(() ->{
try {
Desktop.getDesktop().browse(new URI("http://www.google.com"));
}catch (IOException e){
e.printStackTrace();
}catch (URISyntaxException e){
e.printStackTrace();
}
}
);
t1.setName("Internet Browser");
t1.start();
有办法吗?我可以在一行内写出
new Thread("nameHere",() ->{....}).start();
如果没有,为什么不可能?
答案 0 :(得分:4)
是的,你有public Thread(Runnable target, String name)
构造函数。所以你可以用:
new Thread(() ->{....},"nameHere").start();
<强>
public Thread(Runnable target, String name)
强>分配新的
Thread
对象。这个构造函数具有相同的效果Thread (null, target, name)
参数:
target
-run
的对象 启动此线程时调用方法。如果null
,这个帖子就是 调用run
方法。
name
- 的名称 新线程
因此顺序不同(名称前可运行)。但我想这只是一个细节?