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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© UZI 中级黑马   /  2016-10-29 00:28  /  623 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

题目三: (共12分)
         创建一个Bank银行类,属性有money(初始值为100),生成set/get方法,
         创建一个Bank银行对象,创建三个线程(分别给线程命名为"用户A","用户B","用户C")       
          *当用户A线程执行时,通过set方法将money的值增加100,在控制台输出 "用户A线程正在执行第X次,增加了100元,目前money的值为X元"
         *当用户B线程执行时,通过set方法将money值随机增加1-100(不含100),
         *在控制台输出"用户B线程正在执行第X次,增加了X元,目前money的值为X元"       
         * *当用户C线程执行时,线程休眠10毫秒,不作任何操作.在控制台输出"用户C线程正在执行第X次,睡眠了10毫秒"
         *共执行20次,最后打印输出money的值,如 "增加后的money值为:X元"       
         * *注意:(机子速度太快有可能会出现一条线程全执行完没关系,关键要实现需求)

class PersonThread extends Thread{
        public static int count = 1;
        private static Bank b = new Bank();
       
        public PersonThread(String name) {
                super(name);
        }

        @Override
        public void run() {
                while (true) {
                        synchronized (PersonThread.class) {
                                if (count > 20) {
                                        break;
                                }
                                if ("用户A".equals(getName())) {
                                        b.setMoney(b.getMoney() + 100);
                                        System.out.println(getName()+"线程正在执行第"+count+"次,增加了100元,目前money的值为"+b.getMoney()+"元");
                                }else if ("用户B".equals(getName())) {
                                        Random r = new Random();
                                        int num = r.nextInt(99)+1;
                                        b.setMoney(b.getMoney() + num);
                                        System.out.println(getName()+"线程正在执行第"+count+"次,增加了"+num+"元,目前money的值为"+b.getMoney()+"元");
                                }else {
                                        try {
                                                Thread.sleep(10);
                                                System.out.println("用户C线程正在执行第"+count+"次,睡眠了10毫秒");
                                        } catch (InterruptedException e) {
                                               
                                                e.printStackTrace();
                                        }
                                }
                                if (count == 20) {
                                       
                                        System.out.println("增加后的金额为: " + b.getMoney());
                                }
                                count++;
                        }
                }
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马