一、什么是线程安全?
多个线程共享一个全局变量或静态变量时,做写的操作可能会产生数据不一致,做读的操作不受影响。
二、线程安全问题怎么解决?(使用同步或使用锁)
1.使用synchronized 同步代码块,
1.1、synchronized关键字包括起来的代码每次只能让当前一个线程去执行
synchronized(同一个数据){
可能会发生线程冲突问题
}
1.2、使用同步函数
public synchronized void sale() {
if (trainCount > 0) {
try {
Thread.sleep(40);
} catch (Exception e) {
}
System.out.println(Thread.currentThread().getName() + ",出售 第" + (100 - trainCount + 1) + "张票.");
trainCount--;
}
}
1.3、使用静态同步函数
总结:synchronized的关键字 修饰同步函数用的是this锁,修饰静态同步函数使用的是当前字节码文件