黑马程序员技术交流社区

标题: 多线程之送快递案例,重点重点 [打印本页]

作者: 李春林    时间: 2016-10-9 17:53
标题: 多线程之送快递案例,重点重点
多线程之送快递案例,重点重点,

[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) + "元");
                        }
                }
               
        }
       
}


作者: Quasimodo2    时间: 2016-10-9 20:19
不错的案例

作者: zhuangshuang123    时间: 2016-10-9 23:41
谢谢楼主分享

作者: 回根的落叶    时间: 2016-10-9 23:49
点招机试题也可以这样放上去???{:2_34:}
作者: IT军犬    时间: 2016-10-9 23:58
果断收藏
作者: mafu1993    时间: 2016-10-10 00:00
还没到多线程,不过还是会





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2