Java线程有两种:Daemon守护线程和User用户线程
用户线程:Java虚拟机在所有非守护线程都结束后自动离开
守护线程:服务于用户线程,只有等所有的用户线程结束后,Java虚拟机才退出
总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来。Main主程序是Non-daemon 线程
setDaemon(boolean on) 方法可以方便的设置线程模式,此方法只能在线程启动之前调用。另外,若在Daemon中新建线程则不用设置即为Daemon线程,User线程一样。
创建线程:1、继承Thread类;2、实现Runnable接口。
设置优先级:setPriority(1~10);默认为5;休眠:sleep(long millis);唤醒:interrupt();让步:yield()
线程同步问题:
1、同步块
synchronized(someobject){ 代码段 } someobject是一个监视点对象。
2、同步方法
synchronized void f(){ 代码 }