有没有雷锋

一叶知秋96 2016-05-19 06:58:11
1. 春运票源紧张,总共只剩下50张长途火车票,车站有6个售票窗口卖票,每秒钟有1张票被售出.
问6个售票窗口一起卖,卖完这50张票要多久时间(时间精确到毫秒)? 请用程序实现.


2. 写一个程序,每秒分三列分别在控制台以"2015-12-01 13:21:01"的时间格式打印出: 日本,中国,英国的当地时间.

提示:
查找API手册,看看这个类的用法: java.util.TimeZone
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2016-05-20
  • 打赏
  • 举报
回复

import java.util.Date;

public class Test{
	public static void main(String[] args){
		Ticket ticket = new Ticket(50);
		Window[] windows = new Window[6];
		long start = new Date().getTime();
		for(int i = 0 ; i < windows.length ; i ++){
			windows[i] = new Window("Window-" + (i + 1),ticket);
		}
		for(int i = 0 ; i < windows.length ; i ++){
			windows[i].start();
		}
		for(int i = 0 ; i < windows.length ; i ++){
			try{
				windows[i].join();
			}catch(InterruptedException e){
				e.printStackTrace();
				return;
			}
		}
		long end = new Date().getTime();
		System.out.printf("%nTotal cost:%.3f seconds.%n",(end - start) / 1000.0);
	}
}

class Window extends Thread{

	public Window(String name,Ticket ticket){
		super(name);
		this.ticket = ticket;
	}

	public void run(){
		while(ticket.hasRemaining()){
			ticket.sellTicket();
			System.out.printf("%s:sell one ticket.%n",Thread.currentThread().getName());
			try{
				Thread.sleep(1000);//1秒钟时间出票
			}catch(InterruptedException e){
				e.printStackTrace();
				return;
			}
		}
	}

	private Ticket ticket;
}

class Ticket{

	public Ticket(int ticketLeft){
		this.ticketLeft = ticketLeft;
	}

	public synchronized void sellTicket(){
		ticketLeft --;
	}

	public boolean hasRemaining(){
		return ticketLeft > 0;
	}


	private int ticketLeft;
}
  • 打赏
  • 举报
回复
雷锋在哪里呀,雷锋在哪里

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧