Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading kotlin嵌套线程-“;此范围内有多个标签具有此名称;_Multithreading_Kotlin - Fatal编程技术网

Multithreading kotlin嵌套线程-“;此范围内有多个标签具有此名称;

Multithreading kotlin嵌套线程-“;此范围内有多个标签具有此名称;,multithreading,kotlin,Multithreading,Kotlin,我有一些类似的kotlin代码: Thread { ... Thread { ... return@Thread ... }.start() ... }.start() 现在我得到以下警告: 我知道kotlin不知道此时我想返回哪个线程,是外线程还是内线程。但我不知道该怎么说,Android Studio也帮不了什么忙,因为它只建议编辑此警告的选项: 我试着给线程命名,并认为kotlin可能足够聪明来检查它,但

我有一些类似的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看起来很有效,你发布的链接也表明了这一点。只要允许,我会尽快将你的答案标记为已被接受:)不要只是预定,托马斯·库克!谢谢