Java Kotlin进程是否等待所有线程完成?
我编写了这个简单的测试程序:Java Kotlin进程是否等待所有线程完成?,java,multithreading,kotlin,parallel-processing,Java,Multithreading,Kotlin,Parallel Processing,我编写了这个简单的测试程序: fun main() { println("Main Start") thread { println("Thread Start") Thread.sleep(3000) println("Thread End") } println("Main End") } 如我所见,输出为: Main Star
fun main() {
println("Main Start")
thread {
println("Thread Start")
Thread.sleep(3000)
println("Thread End")
}
println("Main End")
}
如我所见,输出为:
Main Start
Main End
Thread Start
Thread End
我的期望是,至少不会打印“线程结束”消息,
导致主功能结束,且该主线程应在运行时完成
Kotlin进程在完成之前是否总是等待线程完成?您创建的线程是一个非守护进程线程,与Java中一样,JVM在所有非守护进程线程完成之前不会终止 从中可以看出:
fun thread(
start: Boolean = true,
isDaemon: Boolean = false,
contextClassLoader: ClassLoader? = null,
name: String? = null,
priority: Int = -1,
block: () -> Unit ): Thread Creates a thread that runs the specified block of code.
参数
启动-如果为true,线程将立即启动
isDaemon-如果为true,则将该线程创建为守护进程线程Java
当运行的线程都是守护进程时,虚拟机退出
线程。
contextClassLoader-用于加载类和
此线程中的资源
name-线程的名称
优先级-线程的优先级
默认情况下,Kotlin中的线程是非守护进程线程。这就是为什么即使主线程已经完成了它的执行,您仍然可以看到线程的输出。将isDaemon
设置为true
,您将看到以下输出:
Main Start
Main End
Thread Start