标签:pack ticket zed 现象 contain str 一个 rgs and
当多个线程共享同一个全局变量,做写的操作的时候,可能会受到其他线程的干扰,导致数据有问题,这种现象叫做线程安全问题。
模拟火车票卖票程序,火车车厢一般都有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() {
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;
}
标签:pack ticket zed 现象 contain str 一个 rgs and
原文地址:https://www.cnblogs.com/jianpanaq/p/10264069.html