Java Lambda表达式中的命名线程
我试图将name参数与Lambda表达式一起传递,但无法使其工作。我解决问题的方法是这样的:Java Lambda表达式中的命名线程,java,multithreading,lambda,Java,Multithreading,Lambda,我试图将name参数与Lambda表达式一起传递,但无法使其工作。我解决问题的方法是这样的: Thread t1 = new Thread(() ->{ try { Desktop.getDesktop().browse(new URI("http://www.google.com")); }catch (IOException e){ e.printStackTrace();
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();
如果没有,为什么不可能呢?是的,您有构造函数。因此,您可以通过以下方式调用它:
new Thread(() ->{....},"nameHere").start();
新线程(()->{…},“nameHere”).start()代码>
公共线程(可运行目标,字符串名称)
分配一个新的线程对象。此构造函数与
参数:
目标
-运行其的对象
方法在启动此线程时调用。如果null
,则此线程
run
方法被调用。
name
-调用
新线程
因此顺序不同(在名称之前可运行)。但我想这只是一个细节?是的,你有构造函数。因此,您可以通过以下方式调用它:
new Thread(() ->{....},"nameHere").start();
新线程(()->{…},“nameHere”).start()代码>
公共线程(可运行目标,字符串名称)
分配一个新的线程对象。此构造函数与
参数:
目标
-运行其的对象
方法在启动此线程时调用。如果null
,则此线程
run
方法被调用。
name
-调用
新线程
因此顺序不同(在名称之前可运行)。但我想这只是一个细节?您混淆了参数顺序。正确的顺序是Thread(Runnable,String)
,而不是Thread(String,Runnable)
。如果你看一下,你会发现你只是把Thread
的构造函数参数搞错了。好的,非常感谢大家的评论,我的坏朋友,虽然我也尝试过Runnable,String。你弄错了参数顺序。正确的顺序是Thread(Runnable,String)
,而不是Thread(String,Runnable)
。如果你看一下,你会发现你只是把Thread
的构造函数参数搞错了。好的,非常感谢大家的评论,我的坏朋友,虽然我也尝试过Runnable,String。请不要建议使用null。没有ThreadGroup
@M.Prokhorov,就有一个完美的构造函数:不知何故,我忽略了这一点。谢谢。谢谢你的回答,我对订单做了错误的假设。我下次一定会检查。请不要建议使用空值。没有ThreadGroup
@M.Prokhorov,就有一个完美的构造函数:不知何故,我忽略了这一点。谢谢。谢谢你的回答,我对订单做了错误的假设。下次我一定会检查的。