大家好,今天我们分享一下一个对象被多个线程使用的实际案例
首先,我们要知道,使用Thrad 继承方式创建的多线程有单继承的局限性
即:
在Java中一个类只能使用extends继承一个父类.
代码案例:
package Demo01;
//我们在这里写一个抢票的例子
//我们敲得就是一个 多个线程同时操作一个对象的实例
public class TestThread04 implements Runnable {
private int tickNums = 10; //有10张票
@Override
public void run() { //方法的重写
while (true) { //循环
if (tickNums <= 0) { //当票数小于等于0的时候
break; //停止
}
System.out.println(Thread.currentThread().getName()+"-->拿到了第"+tickNums--+"票"); //输出信息
}
}
public static void main(String[] args) {
TestThread04 ticket =new TestThread04(); //创建线程对象,通过线程对象来启动线程
new Thread(ticket,"小梁").start(); //第一个线程
new Thread(ticket,"小王").start(); //第二个线程
new Thread(ticket,"小键").start(); //第三个线程
}
}
看执行结果:
当然也可以这样改:
package Demo01;
//我们在这里写一个抢票的例子
//我们敲得就是一个 多个线程同时操作一个对象的实例
public class TestThread04 implements Runnable {
private int tickNums = 10; //有10张票
@Override
public void run() { //方法的重写
while (true) { //循环
if (tickNums <= 0) { //当票数小于等于0的时候
break; //停止
}
try { //模拟延迟
Thread.sleep(500);
} catch (InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->拿到了第"+tickNums--+"票"); //输出信息
}
}
public static void main(String[] args) {
TestThread04 ticket =new TestThread04(); //创建线程对象,通过线程对象来启动线程
new Thread(ticket,"小梁").start(); //第一个线程
new Thread(ticket,"小王").start(); //第二个线程
new Thread(ticket,"小键").start(); //第三个线程
}
}
结果:
这里会有一个问题,就是数据比较乱,
看上图,你会发现有重复的数据,这样是不安全的
好了,有关于多个线程同时操作一个对象的实际案例就到这里了,谢谢大家