同步代码块:
synchronized(对象)
{
需要被同步的代码
}
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。如火车上的卫生间
java.lang.Thread类
静态方法
currentThread() 返回当前线程实例
sleep(long millis) 当前线程休眠
yield() 当前线程停顿
dumpStack() 打印当前线程的调用栈
常用方法
start() 启动该线程,将导致run方法被自动调用
run() 必须覆盖该方法,在方法体中添加线程逻辑代码
interrupt() 用于将一个中断请求发送给线程
interrupted() 用于测试当前线程是否已经被中断
isInterrupted() 用于测试某个线程是否已经被中断
isAlive() 用于测试某个线程是否还活着
setPriority(int newPriority) 设置线程的优先级
join( ) 等待线程结束
两种创建线程方法的比较
使用Runnable接口
可以将代码和数据分开,形成清晰的模型
还可以从其他类继承
保持程序风格的一致性
直接继承Thread类
不能再从其他类继承
编写简单,可以直接操纵线程
无需使用Thread. currentThread()
同步函数的锁是this
以下是验证this
静态同步函数的锁是Class对象
单例设计 模式--------懒汉式
死锁
同步中嵌套同步