Tum*_*xie 1 java lambda multithreading
我尝试将 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();
Run Code Online (Sandbox Code Playgroud)
有办法吗?我可以写在一行中
new Thread("nameHere",() ->{....}).start();
Run Code Online (Sandbox Code Playgroud)
如果没有,为什么不可能?
是的,你有public Thread(Runnable target, String name)构造函数。所以你可以调用它:
new Thread(() ->{....},"nameHere").start();Run Code Online (Sandbox Code Playgroud)
public Thread(Runnable target, String name)分配一个新
Thread对象。此构造函数与Thread (null, target, name).参数:
target-run启动此线程时调用其方法的对象。如果null,run则调用此线程的 方法。
name- 新线程的名称
所以顺序不同(可在名称之前运行)。但我想这只是一个细节?