总结
线程
- 线程创立形式一:
- 继承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的锁要手动开释
发表回复