并发学习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
原创粉丝点击