我有一些与此类似的 kotlin 代码:
Thread {
...
Thread {
...
return@Thread
...
}.start()
...
}.start()
现在我收到以下警告:
我知道 kotlin 对此时我想返回哪个线程感到困惑,无论是外线程还是内线程。但我不确定如何告诉它,Android Studio 也没有多大帮助,因为它只建议编辑此警告的选项:
我尝试命名线程,并认为 kotlin 可能足够聪明来检查它,但我想这可能是不可能的,因为返回标签可能不会在运行时解释。
我意识到我可以将内线程导出到一个函数中,从而使线程不会相互干扰,如下所示:
Thread {
...
startInnerThread()
...
}.start()
fun startInnerThread() {
Thread {
...
return@Thread
...
}.start()
}
但我想知道是否可以更改标签
@Thread
代替其中之一。
最佳答案
是的,您可以通过标记要返回的函数来做到这一点,如下所示:
Thread {
Thread Foo@ {
return@Foo
}.start()
}.start()
关于multithreading - kotlin 嵌套线程 - "there is more than one label with such a name in this scope",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774815/