赞
踩
单线程:
结论:
- 单线程不存在线程安全问题
- 不存在数据共享的多线程也不存在线程安全问题
- 存在数据共享的多线程可能会出现线程不安全
案例:卖票机制
public class RunnableTicket implements Runnable { //定义一个线程共享的资源 private int ticket=10; @Override public void run() { //使用死循环,重复卖票操作 while (true){ if(ticket>0){ try { Thread.sleep(100);//提高问题的出现率,便于观察,不写也可以 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"正在卖第"+ticket+"张票"); ticket--; } } } }
public class Demo02 { public static void main(String[] args) { //创建一个Runnable接口实现类对象 // 注意:是一个不是多个,若是多个,则不存在资源共享问题 RunnableTicket run=new RunnableTicket(); //创建Thread类对象,构造方法中传入Runnable接口实现类对象 //在此创建三个线程 Thread t0=new Thread(run); Thread t1=new Thread(run); Thread t2=new Thread(run); //开启三个线程 t0.start(); t1.start(); t2.start(); } }
注意:线程安全问题时不能够产生的,我们剋让一个线程访问共享数据的时候,无论是失去CPU的执行权其他线程只能等待当前线程卖完票,其他线程再进行卖票操作,也就是只保证一个人在卖票
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。