Java 多线程 之 suspend挂起 线程实例

http://www.verejava.com/?id=16992945731073

package com.suspend.resume;
/*
 题目: 人们在火车站的售票窗口排队买火车票
	1. 北京西站开门
	2. 打开售票窗口
	3. 北京西站有10张去长沙的票
	4. 打开2个售票窗口, 
	5 假设每个售票窗口每隔1秒钟买完一张票
	
	1. 根据 名词  找类
	人们(Person), 火车站(Station),火车票(Ticket) , 售票窗口e 是火车站的线程
	
	
 */
import java.util.*;
public class TestTrain
{
	public static void main(String[] args)
	{
		//火车西站开门
		Station station=new Station("火车西站");
		
		
		//开窗口
		//Thread win1=station.openWindow("普通窗口");
		Thread win2=station.openWindow("学生窗口");
		
		//窗口1 开始售票
		//设置线程优先级 setPriority()
		//win2.setPriority(Thread.MAX_PRIORITY);
		//win1.start();
		win2.start();
		try
		{
			Thread.sleep(2000);//2 妙的时候  线程停止 stop()
			win2.suspend();//展厅
			Thread.sleep(4000);
			win2.resume();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}
class Station implements Runnable
{
	private String name;//火车站的名称
	private String[] persons={"赵海洋","王锐","宋沙","李欣伟","徐文晓","孟令强","王大卫","李宝琴","王浩"};// 火车站排队 买票的人
	private int i=-1;
	
	public Station(String name)
	{
		super();
		this.name = name;
		
	}
	
	/*
	 打开售票窗口  学生窗口,普通窗口,军人窗口  
	 售票窗口 是线程 Thread
	 */
	public Thread openWindow(String name)
	{
		return new Thread(this,name);
	}
	
	/*
	 火车站售票
	 */
	public   void  sale()
	{
		try
		{
			while(i<persons.length-1)
			{
				i++;
				String person=persons[i];
				
				System.out.println(person+" "+Thread.currentThread().getName()+"  买了一张北京到上海的火车票");
				
				Thread.sleep(2000);
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
	}
	
	@Override
	public void run()
	{
		//开始售票
		sale();
		
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	
}


http://www.verejava.com/?id=16992945731073

posted @ 2018-06-21 10:16  verejava  阅读(231)  评论(0编辑  收藏  举报