Thread
KLT 内核现场 LWP轻量级线程 UT 用户线程
CPU-KLT-LWP-UT
java 线程调度
早期的协同式调度 由线程自身控制 线程执行时间不可控,长时间阻塞容易倒是系统崩溃
抢占式 由系统分配执行时间 可以通过调度线程优先级控制
start
实现 Runnable 继承thread
线程等待 object.wait() thread.join() locksupport.park() thread.sleep()。
线程唤醒 设置等待时间 或者notify()/notifyAll ,lockSupport.parkNanos() lockSupport.parkUntil()
线程让步 thread.yield
线程阻塞 synchronized(重量级操作)
线程安全 不可变性
例:常量应用 final,数组应用 vector,hashtable
为了更高的安全性 有时候性能的牺牲是必须的
共享资源的控制处理
互斥同步实现方式 临界区Critical Section 互斥量 Mutex 信号量Semaphore
synchroized 在编译之后 会生成monitorenter 和 monnitorexit 2个字节码 (锁监听,指令,计数器)
重入锁 reentrantLock 实现同步 区别等待中断,公平锁,锁绑定多个条件