线程实现的方式
1_继承Thread类
2_实现Runnable
线程安全问题
当多个线程同时访问一个静态的公共资源会有线程安全问题
1_同步代码块
线程同步:
* 1.同步代码块
* 基本语法结构
synchronized (同步监听对象) {
可能引发线程安全问题的代码
}
同步监听对象: 多个线程是同一个对象
1.可以是任意对象
* 2.字节码对象(推荐)
* 3.this
2_同步方法
1、就是在需要被同步的方法上面加关键字 synchronized
2、加的位置 :在返回值类型的前面
3、不需要也不能够显示的写同步监听对象
4、如果是一个非static的方法,那么同步监听对象就是this;
5、如果是static修饰的方法,那么同步监听对象就是当前方法所在的类的字节码对象
*
3_加锁
Lock
lock() 加锁
unlock()释放锁
注意:多个对象应该使用同一把锁
对于关键代码加锁以后必须要释放(放在finally代码块里面)