【JAVA】线程安全的案例
1.什么是线程安全?
当多个线程共享同一个全局变量,做写的操作的时候,可能会受到其他线程的干扰,导致数据有问题,这种现象叫做线程安全问题。
2.案例
模拟火车票卖票程序,火车车厢一般都有118个座,这里新建一个火车票类,一个方法卖票。再建一个测试类
package lock;
public class Ticket {
public int count = 118;
public int sell() {
System.out.println(Thread.currentThread().getName() + ":还剩下" + count + "张票");
return --count;
}
}
package lock;
public class SellerSystem {
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(new Runnable() {
3.为了保证线程安全问题
public synchronized int sell() {
System.out.println(Thread.currentThread().getName() + ":还剩下" + count + "张票");
return --count;
}
第二种方法,使用锁
public int sell() {
lock.lock();
System.out.println(Thread.currentThread().getName() + ":还剩下" + count + "张票");
count--;
lock.unlock();
return count;
}
Ride the wave as long as it will take you.