进程与线程:
一个进程可以包含多个线程。多个线程可以并行,但是一个时间点只能有一个线程是运行状态。
线程的状态:
查看API可以,线程的状态分为五种:
(JVM里面的状态:These states are virtual machine states which do not reflect any operating system thread states)
1. NEW: 当新建一个Thread的时候,当前线程的处于新建状态,线程还未开始。
2. RUNNABLE: 调用Thread的start方法,线程进入可运行状态,在这个状态下,线程开始处理工作,还有一种情况是未真正处理,还正在等待操作系统的调用。
3. BLOCKED: 线程的阻塞状态。一种情况下当调用wait方法时,当前线程释放锁,其他线程获取锁,开始处理,当前线程进入阻塞状态。
4. WAITING: 不定期等待状态。等待其他线程的notify.
5. TIMED_WAITING:有一定期限的等待状态,与WAITING最明显的区别是Thread.sleep(). 可以指定sleep时间。
6. TERMINATED: 终止状态。线程处理完成。
两个JDK自带的同步工具类:CountDownLatch 和CyclicBarrier