java多线程(三)线程的安全问题

1.1. 什么是线程安全

如果有多个线程同时运行同一个实现了Runnable接口的类,程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的;反之,则是线程不安全的。

1.2. 问题演示

为了演示线程安全问题,我们采用多线程模拟多个窗口同时售卖《肥潘大战猪八戒》电影票。

1.2.1.   第一步:创建售票线程类

package com.thread;

/**
* @Auther: lanhaifeng
* @Date: 2019/11/20 0020 21:06
* @Description:多线程模拟多个窗口同时售卖电影票
* @statement:
*/
public class Ticket implements Runnable{

private int ticktNum= 0;//票号

//线程售票
public void run() {
while(ticktNum<10){ //模拟售10张票
//1.模拟出票时间
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//2.打印进程号和票号,票数减1
String name = Thread.currentThread().getName();
System.out.println("线程"+name+"售票:票号"+ticktNum++);
}
}

public static void main(String[] args) {
Ticket ticket = new Ticket();
Thread thread1 = new Thread(ticket, "窗口1");
Thread thread2 = new Thread(ticket, "窗口2");
Thread thread3 = new Thread(ticket, "窗口3");
thread1.start();
thread2.start();
thread3.start();
}

}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzzfs.html