在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。

这段代码启动一个线程,并设置为守护线程。线程内部是间隔500ms 重复打印100次输出。外部主线程睡眠2s。

协程跟守护线程很像,用协程来写上面的逻辑,代码如下:

我们可以看出,活动的协程不会使进程保持活动状态。它们的行为就像守护程序线程。