并发学习3-启动多个线程
来源:互联网 发布:淘宝云客服报名条件 编辑:程序博客网 时间:2024/06/08 19:17
package com.ylhao.www;class TicketsThread implements Runnable{private int ticketsCount = 10; //共剩余10张票public TicketsThread(){}public TicketsThread(int ticketsCount){this.ticketsCount = ticketsCount;}public void saleTicket(){if(ticketsCount > 0){ticketsCount--;System.out.println(Thread.currentThread().getName()+"售票1张,余票数为:"+ticketsCount);}}public void run(){while(ticketsCount > 0){saleTicket();}}}public class MainThread{public static void main(String[] args){System.out.println(Thread.currentThread().getName());for(int i = 0; i<5; i++){ //启动5个售票线程,每个售票线程有3张票可以出售new Thread(new TicketsThread(3),"售票线程"+(i+1)).start();}}}
程序运行结果如下:
main
售票线程1售票1张,余票数为:2
售票线程3售票1张,余票数为:2
售票线程3售票1张,余票数为:1
售票线程3售票1张,余票数为:0
售票线程2售票1张,余票数为:2
售票线程1售票1张,余票数为:1
售票线程1售票1张,余票数为:0
售票线程2售票1张,余票数为:1
售票线程4售票1张,余票数为:2
售票线程2售票1张,余票数为:0
售票线程4售票1张,余票数为:1
售票线程4售票1张,余票数为:0
售票线程5售票1张,余票数为:2
售票线程5售票1张,余票数为:1
售票线程5售票1张,余票数为:0
分析:
首先打印了分配给main()的那个线程的名字,默认为main
接着新开了5个售票线程,每个售票线程有3张票,这里要注意,这里新建Thread对象时,传入的TicketsThread对象时5个不同的对象
线程调度器自动的控制线程的换进换出,如果机器上有多个处理器,线程调度器会在这些处理器之间默默的分发线程
0 0
- 并发学习3-启动多个线程
- 通过semaphore信号灯,开启多个线程,但只并发3个线程
- 并发编程(2)-多个线程多个锁
- Java5 并发线程学习
- 线程并发学习----ThreadLocal
- java同时启动多个线程
- 【CountDownLatch】实现多个线程同时启动
- python 创建多个线程并启动
- java如何实现多个线程并发运行
- 线程并发时,防止单例出现多个实例。
- 【java并发】多个线程间共享数据
- Java线程池并发执行多个任务
- JAVA 并发编程-多个线程之间共享数据
- windows 少数线程并发 监听多个目录
- java并发多线程,线程的创建启动
- 线程并发学习----原子类
- 线程并发学习—-ConcurrentHashMap
- 线程并发学习----线程阻塞(synchronized)
- Angular运行于nw.js时ng-src无法显示的问题解决
- 图解sendRedirect,include,forward的区别
- Matlab中的括号()[]{}
- 面对对象编程总结(一)
- SpringMVC实例之HelloWorld
- 并发学习3-启动多个线程
- 初始化与赋值之间的区别
- 堆排序
- em unit in font-size
- window.onload和$(document).ready()的区别
- 含有无符号类型的表达式
- StringTokenizerDemo
- 开始博客生涯
- EditText显示文字不一样