标签:博客 ges pack -- catch stat get inter java基础知识
1 package com.day13.math; 2 /** 3 * 类说明 :模拟三个窗口同时售票 4 * @author 作者 : chenyanlong 5 * @version 创建时间:2017年10月29日 6 */ 7 public class ThreadTest1 { 8 9 public static void main(String[] args) { 10 //创建三个线程对象 11 SaleTicket saleTicket1=new SaleTicket("窗口1"); 12 SaleTicket saleTicket2=new SaleTicket("窗口2"); 13 SaleTicket saleTicket3=new SaleTicket("窗口3"); 14 15 //开始售票 16 saleTicket1.start(); 17 saleTicket2.start(); 18 saleTicket3.start(); 19 } 20 } 21 22 //售票的窗口 23 class SaleTicket extends Thread{ 24 25 int num=50;//票数 26 27 public SaleTicket(String name){ 28 super(name); 29 } 30 31 32 33 @Override 34 public void run(){ 35 while(true){ 36 if(num>0){ 37 System.out.println(Thread.currentThread().getName()+"出售了第"+num+"票"); 38 num--; 39 }else{ 40 System.out.println("票买完了!"); 41 break; 42 } 43 } 44 } 45 }
出现在的原因:
1 static int num=50;//票数
1 package com.day13.math; 2 /** 3 * 类说明 :模拟三个窗口同时售票 4 * @author 作者 : chenyanlong 5 * @version 创建时间:2017年10月29日 6 */ 7 public class ThreadTest1 { 8 9 public static void main(String[] args) { 10 //创建三个线程对象 11 SaleTicket saleTicket1=new SaleTicket("窗口1"); 12 SaleTicket saleTicket2=new SaleTicket("窗口2"); 13 SaleTicket saleTicket3=new SaleTicket("窗口3"); 14 15 //开始售票 16 saleTicket1.start(); 17 saleTicket2.start(); 18 saleTicket3.start(); 19 } 20 } 21 22 //售票的窗口 23 class SaleTicket extends Thread{ 24 25 static int num=50;//票数 26 static Object o=new Object(); 27 public SaleTicket(String name){ 28 super(name); 29 } 30 31 32 @Override 33 public void run(){ 34 while(true){ 35 //同步代码块: 36 synchronized (o) { 37 if(num>0){ 38 System.out.println(Thread.currentThread().getName()+"出售了第"+num+"票"); 39 num--; 40 }else{ 41 System.out.println("票买完了!"); 42 break; 43 } 44 } 45 } 46 } 47 }
1 package com.day13.math; 2 /** 3 * 类说明 :模拟三个窗口同时售票 4 * @author 作者 : chenyanlong 5 * @version 创建时间:2017年10月29日 6 */ 7 public class ThreadTest1 { 8 9 public static void main(String[] args) { 10 //创建三个线程对象 11 SaleTicket saleTicket1=new SaleTicket("窗口1"); 12 SaleTicket saleTicket2=new SaleTicket("窗口2"); 13 SaleTicket saleTicket3=new SaleTicket("窗口3"); 14 15 //开始售票 16 saleTicket1.start(); 17 saleTicket2.start(); 18 saleTicket3.start(); 19 } 20 } 21 22 //售票的窗口 23 class SaleTicket extends Thread{ 24 25 static int num=50;//票数 26 static Object o=new Object(); 27 public SaleTicket(String name){ 28 super(name); 29 } 30 31 32 @Override 33 public void run(){ 34 while(true){ 35 //同步代码块: 36 synchronized (o) { 37 if(num>0){ 38 System.out.println(Thread.currentThread().getName()+"出售了第"+num+"票"); 39 num--; 40 try { 41 Thread.sleep(100);//每个线程执行一次,就睡眠100毫秒 42 } catch (InterruptedException e) { 43 // TODO Auto-generated catch block 44 e.printStackTrace(); 45 } 46 }else{ 47 System.out.println("票买完了!"); 48 break; 49 } 50 } 51 } 52 } 53 }
标签:博客 ges pack -- catch stat get inter java基础知识
原文地址:http://www.cnblogs.com/chenyanlong/p/7750318.html