避免数据同步的一种方式是不共享变量,比如使用局部变量和ThreadLocal
线程调度
系统为线程分配CUP使用权的过程
协同式线程调度
线程的执行时间由线程自己控制,当自己执行完后,主动通知操作系统切换到另外一个线程上执行...状态转换
新建(New)创建后尚未启动的线程
运行(Runnable):Runnable包括操作系统中的Running和Ready....如没有设置timeout的Object.wait()方法和Thread.join()方法,以及LockSupport.park()方法
限时等待(Timed Waiting):该状态下的线程不会被分配CPU...线程不会自动唤醒,必须依靠其它线程调用notify()或notifyAll()方法才能会被唤醒.
2.同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被其它线程占用,则JVM会把该线程放入锁池.
3....其它阻塞(限时等待):运行的线程执行了join()或者sleep()方法,或者发起了I/O请求,JVM会把该线程置为阻塞状态,当sleep()状态超时,join()等待线程终止或者超时,I/O处理完成