线程池的举例使用
?
评论(0)收藏 举报view plain- //售票员??import?java.util.Iterator;??
- import?java.util.Map;????
- ??public?class?TicketSaler?implements?Runnable?{??
- ????private?Map<String,?Boolean>?ticketMap;//票池??????private?String?salerName;//售票员姓名??
- ??????????public?TicketSaler(Map<String,?Boolean>?ticketMap,?String?salerName){??
- ????????this.ticketMap?=?ticketMap;??????????this.salerName?=?salerName;??
- ????}????
- ??????//售票??
- ????private?void?saleTicket(){?????????????
- ????????for(Iterator<String>?it?=?ticketMap.keySet().iterator();?;){??????????????synchronized?(ticketMap)??
- ????????????{??????????????????if(it.hasNext()){??
- ????????????????????String?ticketNo?=?it.next();??????????????????????if(!ticketMap.get(ticketNo)){??
- ????????????????????????System.out.println(salerName?+":"?+?ticketNo?+?"已被售出。");??????????????????????????ticketMap.put(ticketNo,?true);??
- ????????????????????}??????????????????}else{??
- ????????????????????break;??????????????????}??
- ????????????}??????????}??
- ????}????????
- ????public?void?run()?{??????????saleTicket();??
- ????}????
- }??
?
view plain- //售票员控制台????
- import?java.util.HashMap;??import?java.util.Map;??
- import?java.util.concurrent.ExecutorService;??import?java.util.concurrent.Executors;??
- ????
- public?class?TicketSalerConsole?{????
- ????/**?功能说明:??????*?@param?args?
- ?????*?@author?胡海??????*?@since?2011-11-16?下午11:45:55?
- ?????*/????
- ????public?static?void?main(String[]?args)?{??????????Map?ticketMap?=?new?HashMap<String,?Boolean>();//票池:<票编号,是否已出售>??
- ????????for(int?i?=?1;?i?<=?1000;?i++){//生成1000张火车票到票池??????????????ticketMap.put("T"?+?i,?false);??
- ????????}????????????
- //生成4名售票员??????????TicketSaler?s1?=?new?TicketSaler(ticketMap,?"S1");??
- ????????TicketSaler?s2?=?new?TicketSaler(ticketMap,?"S2");??????????TicketSaler?s3?=?new?TicketSaler(ticketMap,?"S3");??
- ????????TicketSaler?s4?=?new?TicketSaler(ticketMap,?"S4");????????????
- ????????Thread?t1?=new?Thread(s1);??????????Thread?t2?=new?Thread(s2);??
- ????????Thread?t3?=new?Thread(s3);??????????Thread?t4?=new?Thread(s4);????????
- ??????????????????t1.setName("T1");??
- ????????t2.setName("T2");??????????t3.setName("T3");??
- ????????t4.setName("T4");????????????
- ????????ExecutorService?service?=?Executors.newCachedThreadPool();????????????
- ????????service.execute(t1);??????????service.execute(t2);??
- ????????service.execute(t3);??????????service.execute(t4);??
- ??????????????????service.shutdown();//执行完线程池中的线程后尽快退出??
- ????}????
- }?