java线程的调度主要有二种方式:(1)协同式执行(2)抢占式执行
(1)协同式执行就是一个线程执行完毕通知操作系统去执行另外一个线程,因此多线程执行,不会出现同步的问题,但是如果一个线程的执行时间很长的话,可能导致系统崩溃的问题。
(2)抢占式执行,线程的执行时间是由操作系统决定。操作系统采用时间片轮转的算法,去执行每一个线程。我们用户也可以给线程设置优先级,优先级高的先执行,优先级低的后执行。但是,线程的执行需要映射到操作系统上,因此有时候采用优先级的方式肯能不好使。
线程的几种状态:
创建:线程创建未启动 Thread thread=new Thread()
运行:thread.start();
无限等待:Object.wait() Object.notify()
有限等待:Thread.sleep(long timeout) Object.wait() Object.notify(long timeout)
阻塞:synchronized 线程进入同步区,就会阻塞
结束:线程执行结束