Java多线程demo:售票
2017-10-10 09:05
225 查看
java多线程的简单demo:售票
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class SaleTicket implements Runnable { private int tickets = 100; private synchronized int sale(){ if(tickets > 0){ System.out.println(Thread.currentThread().getName() + "********余票: "+ (tickets)+"张票"); tickets--; /* try{ Thread.sleep(50); }catch(InterruptedException e){ e.printStackTrace(); } */ } return tickets+1; } private void TheTicket(int tickets){ try{ Thread.sleep(500); DateFormat bf = new SimpleDateFormat("yyyy-MM-dd E a HH:mm:ss"); System.out.println(Thread.currentThread().getName()+"**********" +bf.format(new Date())+ "出票成功 !!! 第"+ (tickets)+"张票" ); }catch(InterruptedException e){ e.printStackTrace(); } } @Override public void run() { if(tickets > 0){ TheTicket(sale()); } else{ System.out.println(Thread.currentThread().getName()+"没票了"); } } }
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Test { public static void main(String[] args) throws Exception { int count =160;//买票人数 int taskSize = count <40 ? 5 : 10; // 创建一个线程池 ExecutorService pool = Executors.newFixedThreadPool(taskSize); SaleTicket c =new SaleTicket(); for (int i = 0; i < count; i++) { // 执行任务 pool.submit(c); } // 关闭线程池 pool.shutdown(); } }多线程相当于多个窗口售票,可以提高售票速度,这个简单的小demo希望能对大家有所帮助
相关文章推荐
- linux多线程编程之java售票程序的移植
- java多线程售票小例子
- java多线程(内附实例:窗口售票问题、人和叉子的问题)
- Java多线程下压缩文件demo
- Java多线程-线程间通信Demo
- Java学习笔记 --- 多线程共享资源Demo
- Java多线程应用之火车站售票
- 黑马程序员--java多线程模拟实现多窗口售票大厅工作
- java多线程-售票例子-创建线程-实现Runnable接口
- Java基础--多线程--售票
- java多线程之火车售票系统模拟
- 【Java Socket】【Flex Socket】【Java 多线程】实现基本聊天功能demo
- java多线程售票程序中synchronized用法反思
- Java Design Demo -Runnable的使用方式 多线程
- java多线程简单demo
- java多线程实现售票
- java多线程的简单demo
- Java:多线程模拟多站点售票过程
- Java的Socket通信----通过 Socket 实现 TCP 编程之多线程demo(2)
- JAVA学习笔记_demo_多线程_1