当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有
执行完,另一个线程参与进来执行。导致共享数据的错误。此时,多线程的安全问题就会出现。
解决办法是对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以
参与执行。
通过模拟3个售票窗口卖出100张票的情节,用代码的方式来实现。
一、多线程的创建
多线程的创建有4中方式,在jdk5之前有两种,第1种是继承Thread类的方法,第2种是实现Runnable接口
jdk5之后,也有2种,一种是实现Callable接口,另一种是使用线程池的方式。
核心都是覆盖Thread类中的run(),多个线程执行相同或不同的run()。
class Window implements Runnable {
private int ticket = 100;
@Override
public void run() {
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "票号:" + ticket);
ticket--;