java并发编程学习(3)
来源:互联网 发布:sql关联表查询 编辑:程序博客网 时间:2024/05/28 15:59
多线程模拟银行排队
银行排队叫号的场景如图所示:
有一个出票机,按顺序出票。有多个柜台叫号。对于这样的场景,代码实现可以分为2部分,出票机和柜台。
- 出票机
public class TicketWindow implements Runnable { private int index = 1; private final int MAX = 50; @Override public void run() { while (index <= MAX) { System.out.println(Thread.currentThread().getName() + " 的号是:" + index++); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }}
新建TicketWindow类,继承Runnable接口。主要用于生成号码。这里号码从1开始,并且有一个最大值50。当小于最大值时,号码则顺序加一。
- 柜台
public class Bank { public static void main(String[] args) { final TicketWindow ticketWindow = new TicketWindow(); Thread t1 = new Thread(ticketWindow, "一号柜台"); Thread t2 = new Thread(ticketWindow, "二号柜台"); Thread t3 = new Thread(ticketWindow, "三号柜台"); t1.start(); t2.start(); t3.start(); }}
模拟三个柜台的情况,每个柜台是一个单独的线程,但是它们必须共享出票数据,所以只定义一个final 的TicketWindow对象。
运行结果如下:
二号柜台 的号是:2一号柜台 的号是:1三号柜台 的号是:3二号柜台 的号是:4三号柜台 的号是:6一号柜台 的号是:5二号柜台 的号是:7三号柜台 的号是:8一号柜台 的号是:9二号柜台 的号是:10三号柜台 的号是:11一号柜台 的号是:12二号柜台 的号是:13三号柜台 的号是:14一号柜台 的号是:15二号柜台 的号是:16三号柜台 的号是:17一号柜台 的号是:18三号柜台 的号是:19二号柜台 的号是:19一号柜台 的号是:20三号柜台 的号是:21一号柜台 的号是:22二号柜台 的号是:23三号柜台 的号是:24一号柜台 的号是:25二号柜台 的号是:26三号柜台 的号是:27一号柜台 的号是:28二号柜台 的号是:29一号柜台 的号是:31三号柜台 的号是:30二号柜台 的号是:32一号柜台 的号是:33三号柜台 的号是:33二号柜台 的号是:34一号柜台 的号是:35三号柜台 的号是:36二号柜台 的号是:37一号柜台 的号是:38三号柜台 的号是:39二号柜台 的号是:40一号柜台 的号是:41三号柜台 的号是:42二号柜台 的号是:43一号柜台 的号是:44三号柜台 的号是:44二号柜台 的号是:45一号柜台 的号是:46三号柜台 的号是:47二号柜台 的号是:48一号柜台 的号是:49三号柜台 的号是:50Process finished with exit code 0
可以看到,三个柜台同时叫号的效果了
阅读全文
0 0
- java并发编程学习(3)
- Java并发编程学习
- java并发编程实战学习(3)--基础构建模块
- java并发编程实践学习(3)组合对象
- Java并发编程学习记录#3
- Java并发编程学习笔记(一)
- Java并发编程学习(一)
- java并发编程学习笔记(一)
- java并发编程学习(1)
- java并发编程学习(2)
- java并发编程学习(4)
- java 并发编程学习(1)
- java 并发编程学习(2)
- 学习java并发编程实战(一)
- java并发编程实践学习
- Java并发编程学习2
- Java多线程并发编程学习
- java的并发编程学习
- Bitmap的秘密
- 二进制中1的个数
- Java之NIO
- windows下面安装easy_install和pip教程
- frameset标签设计页面
- java并发编程学习(3)
- 31. Next Permutation
- 关于javaScript switch 使用心得
- 代理模式(静态代理)的通俗理解
- [算法系列之十八]海量数据处理之BitMap
- Servlet 与 Ajax 交互一直报status=parsererror
- mysql的四种隔离级别
- 树莓派配置之换源
- Linux文件编程之遍历目录