Multithreading kotlin嵌套线程-“;此范围内有多个标签具有此名称;
我有一些类似的kotlin代码:Multithreading kotlin嵌套线程-“;此范围内有多个标签具有此名称;,multithreading,kotlin,Multithreading,Kotlin,我有一些类似的kotlin代码: Thread { ... Thread { ... return@Thread ... }.start() ... }.start() 现在我得到以下警告: 我知道kotlin不知道此时我想返回哪个线程,是外线程还是内线程。但我不知道该怎么说,Android Studio也帮不了什么忙,因为它只建议编辑此警告的选项: 我试着给线程命名,并认为kotlin可能足够聪明来检查它,但
Thread {
...
Thread {
...
return@Thread
...
}.start()
...
}.start()
现在我得到以下警告:
我知道kotlin不知道此时我想返回哪个线程,是外线程还是内线程。但我不知道该怎么说,Android Studio也帮不了什么忙,因为它只建议编辑此警告的选项:
我试着给线程命名,并认为kotlin可能足够聪明来检查它,但我想这可能是不可能的,因为返回标签可能不会在运行时解释
我意识到我可以将内部线程导出到函数中,从而使线程不会相互干扰,如下所示:
Thread {
...
startInnerThread()
...
}.start()
fun startInnerThread() {
Thread {
...
return@Thread
...
}.start()
}
但是我想知道是否有可能改变其中一个线程的标签
@Thread
。是的,您可以通过将函数标记为从like so返回来实现这一点:
Thread {
Thread Foo@ {
return@Foo
}.start()
}.start()
是的,您可以标记要返回的行,在行首使用
Foo@
,然后使用return@Foo
如果我没记错的话。我使用了Foo
这个名称,以明确你可以随意称呼这个退货标签(因此,不,Foo不是什么神奇的词:D)看:我不是100%确定你可以按照我事后的建议去做,所以请阅读官方文件并进行讨论play@ThomasCook看起来很有效,你发布的链接也表明了这一点。只要允许,我会尽快将你的答案标记为已被接受:)不要只是预定,托马斯·库克!谢谢