读书人

线程池的举例来说使用

发布时间: 2012-09-09 09:27:54 作者: rapoo

线程池的举例使用

?

评论(0)收藏 举报view plain
  1. //售票员??import?java.util.Iterator;??
  2. import?java.util.Map;????
  3. ??public?class?TicketSaler?implements?Runnable?{??
  4. ????private?Map<String,?Boolean>?ticketMap;//票池??????private?String?salerName;//售票员姓名??
  5. ??????????public?TicketSaler(Map<String,?Boolean>?ticketMap,?String?salerName){??
  6. ????????this.ticketMap?=?ticketMap;??????????this.salerName?=?salerName;??
  7. ????}????
  8. ??????//售票??
  9. ????private?void?saleTicket(){?????????????
  10. ????????for(Iterator<String>?it?=?ticketMap.keySet().iterator();?;){??????????????synchronized?(ticketMap)??
  11. ????????????{??????????????????if(it.hasNext()){??
  12. ????????????????????String?ticketNo?=?it.next();??????????????????????if(!ticketMap.get(ticketNo)){??
  13. ????????????????????????System.out.println(salerName?+":"?+?ticketNo?+?"已被售出。");??????????????????????????ticketMap.put(ticketNo,?true);??
  14. ????????????????????}??????????????????}else{??
  15. ????????????????????break;??????????????????}??
  16. ????????????}??????????}??
  17. ????}????????
  18. ????public?void?run()?{??????????saleTicket();??
  19. ????}????
  20. }??

?

view plain
  1. //售票员控制台????
  2. import?java.util.HashMap;??import?java.util.Map;??
  3. import?java.util.concurrent.ExecutorService;??import?java.util.concurrent.Executors;??
  4. ????
  5. public?class?TicketSalerConsole?{????
  6. ????/**?功能说明:??????*?@param?args?
  7. ?????*?@author?胡海??????*?@since?2011-11-16?下午11:45:55?
  8. ?????*/????
  9. ????public?static?void?main(String[]?args)?{??????????Map?ticketMap?=?new?HashMap<String,?Boolean>();//票池:<票编号,是否已出售>??
  10. ????????for(int?i?=?1;?i?<=?1000;?i++){//生成1000张火车票到票池??????????????ticketMap.put("T"?+?i,?false);??
  11. ????????}????????????
  12. //生成4名售票员??????????TicketSaler?s1?=?new?TicketSaler(ticketMap,?"S1");??
  13. ????????TicketSaler?s2?=?new?TicketSaler(ticketMap,?"S2");??????????TicketSaler?s3?=?new?TicketSaler(ticketMap,?"S3");??
  14. ????????TicketSaler?s4?=?new?TicketSaler(ticketMap,?"S4");????????????
  15. ????????Thread?t1?=new?Thread(s1);??????????Thread?t2?=new?Thread(s2);??
  16. ????????Thread?t3?=new?Thread(s3);??????????Thread?t4?=new?Thread(s4);????????
  17. ??????????????????t1.setName("T1");??
  18. ????????t2.setName("T2");??????????t3.setName("T3");??
  19. ????????t4.setName("T4");????????????
  20. ????????ExecutorService?service?=?Executors.newCachedThreadPool();????????????
  21. ????????service.execute(t1);??????????service.execute(t2);??
  22. ????????service.execute(t3);??????????service.execute(t4);??
  23. ??????????????????service.shutdown();//执行完线程池中的线程后尽快退出??
  24. ????}????
  25. }?

读书人网 >编程

热点推荐