A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

多线程之送快递案例,重点重点,

[Java] 纯文本查看 复制代码
package com.heima.test;

public class Test02 {

	/**
	 * 飞毛腿快递公司有1000件快递,现在有两个员工(张三,李四)同时送快递,送一件快递需要5ms,一个快递能赚0.5员
	 * 问,他们分别送了多少件快递,分别赚了多少钱
	 * 注意:一个员工只能输出一个
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FeiMaoTui fmt = new FeiMaoTui();
		Thread t1 = new Thread(fmt);
		Thread t2 = new Thread(fmt);
		t1.setName("张三");
		t2.setName("李四");
		t1.start();
		t2.start();
	}

}

class FeiMaoTui implements Runnable {
	private int kuaijian = 1000;
	int sum =0;
	int count = 0;
	@Override
	public void run() {
		while (true) {
			synchronized (this) {
				if (kuaijian <= 0) {
					break;
				}
				try {
					Thread.sleep(5);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				
				if ("张三".equals(Thread.currentThread().getName())) {
					sum = sum +1;
					kuaijian = kuaijian -1 ;
				}else if ("李四".equals(Thread.currentThread().getName())) {
					count = count +1;
					kuaijian = kuaijian -1 ;
				}
			}
		}
		synchronized (this) {
			if (("张三".equals(Thread.currentThread().getName()))) {
				System.out.println(Thread.currentThread().getName() + "...送了" + sum + "件快递,工赚了" + (sum * 0.5) + "元");
			}else if (("李四".equals(Thread.currentThread().getName()))) {
				System.out.println(Thread.currentThread().getName() + "...送了" + count + "件快递,工赚了" + (count * 0.5) + "元");
			}
		}
		
	}
	
}

5 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
点招机试题也可以这样放上去???{:2_34:}
回复 使用道具 举报
果断收藏
回复 使用道具 举报
还没到多线程,不过还是会
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马