java中线程安全,线程死锁,线程通信快速入门

一:多线程安全问题

###1 引入

/* * 多线程并发访问同一个数据资源 * 3个线程,对一个票资源,出售 */ public class ThreadDemo { public static void main(String[] args) { //创建Runnable接口实现类对象 Tickets t = new Tickets(); //创建3个Thread类对象,传递Runnable接口实现类 Thread t0 = new Thread(t); Thread t1 = new Thread(t); Thread t2 = new Thread(t); t0.start(); t1.start(); t2.start(); } }

/* * 通过线程休眠,出现安全问题 */ public class Tickets implements Runnable{ //定义出售的票源 private int ticket = 100; private Object obj = new Object(); public void run(){ while(true){ //对票数判断,大于0,可以出售,变量--操作 if( ticket > 0){ try{ Thread.sleep(50); //加了休眠让其他线程有执行机会 }catch(Exception ex){} System.out.println(Thread.currentThread().getName()+" 出售第 "+ticket--); } } } }

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

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