线程安全
Synchronized 线程同步(线程安全处理)
线程同步的两种方法:
1:同步代码块
2:同步方法
同步代码块:
synchronized (锁对象) {
可能会产生线程安全问题的代码
}
同步代码块中的锁对象可以是任意的对象;但多个线程时,要使用同一个锁对象才能够保证线程安全。
同步方法:
在方法声明上加上Synchronized
public synchronized void method(){
可能会产生线程安全问题的代码
}
同步方法中的锁对象是 this
静态同步方法: 在方法声明上加上static synchronized
public static synchronized void method(){
可能会产生线程安全问题的代码
}
静态同步方法中的锁对象是 类名.class
Lock接口
ReentrantLock() 实现类
lock() 获取锁
unlock() 释放锁
public void run(){
while(true){
lock.lock();
if(ti>0){
System.out.println(Thread.currentThread().getName()+"出售第"+ti--+"张票");
}
lock.unlock();
}
}