总结
线程
- 线程创立形式一:
- 继承 Thread 类(实现 Runnable 接口)
- 继承 Thread 类
- 重写 run 办法
- 创立子类对象
- 调用 start 办法(这个办法是 Thread 外面的办法)
- 创立线程的形式二:
start 办法是开启一个新的线程,会主动调用 run 办法
- 写一个类实现 Runnable
- 重写 run 办法
- 创立类的对象
- 将对象作为实例后 Thread 对象的参数传递
- 调用 start 办法
- Thread 类中罕用办法:
- currentThread 获取以后线程对象
- setName 设置线程名字
- getName 获取线程名字
- setPriority 设置优先级
- getPriority 获取优先级
- sleep 使以后线程睡眠多少毫秒
线程平安
- 当多个线程拜访同一资源时,如果没有做限度,会呈现线程平安问题
- 解决线程平安的形式:
形式一:应用 synchronized 同步、效率低、监听对象要保障唯一性
同步代码块:
synchronized(监听对象){
会呈现线程平安的代码
}
对于监听对象:
1.Runnable 的实现类能够用 this,Thread 的继承类不能用 this,不能保障唯一性
2.static 润饰的对象能够,实现类里能够不必写,因为只创立了一个对象
3. 常量池中的字符串能够
4. 类锁能够:类名.class 和对象名.getClass()
同步办法:
public 前面加一个 synchronized 润饰,相当于 this,再加个 static 就相当于一个类锁
形式二:jdk1.6 之后能够用 Lock 接口的实现类 ReentrantLock
应用办法:
Lock l = new ReentrantLock();
l.lock();// 开锁
try{
存在线程平安的代码
}finally{
l.unLock()// 关锁
}
synchronized 的锁会主动开释,lock 的锁要手动开释