黑马程序员技术交流社区

标题: 用线程模拟抢红包,有没有改进的方法,可以每条线程都..... [打印本页]

作者: 女神之泪    时间: 2016-5-13 09:34
标题: 用线程模拟抢红包,有没有改进的方法,可以每条线程都.....
创建5条线程,红包内有1-10元随机。让这些线程去抢红包,然后输出抢到多少钱。

public static void main(String[] args) {
                // TODO Auto-generated method stub
                final Qiang q = new Qiang();
                        new Thread(){public void run() {
                                        while(true){
                                                try {
                                                        q.bag1();
                                                } catch (Exception e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
                                        }
                                        };
                        }.start();
                        new Thread(){public void run() {
                                while(true){
                                        try {
                                                q.bag2();
                                        } catch (Exception e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                }
                                };
                }.start();
                                new Thread(){public void run() {
                                        while(true){
                                                try {
                                                        q.bag3();
                                                } catch (Exception e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
                                        }
                                        };
                        }.start();
                        new Thread(){public void run() {
                                while(true){
                                        try {
                                                q.bag4();
                                        } catch (Exception e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                }
                                };
                }.start();
                new Thread(){public void run() {
                        while(true){
                                try {
                                        q.bag5();
                                } catch (Exception e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                        };
                }.start();
                                                }
                                        }
                class Lock{}
                class Qiang{
                        Lock lo = new Lock();
                       
                        public void bag1() throws Exception{
                                Random r = new Random();
                                synchronized(lo){
                                        Thread.sleep(300);
                                        System.out.println("第一个"+"="+(r.nextInt(10)+1));
                                }
                        }
                       
                        public void bag2() throws Exception{
                                Random r = new Random();
                                synchronized(lo){
                                       
                                        Thread.sleep(300);
                                        System.out.println("第二个"+"="+(r.nextInt(10)+1));
                                }
                        }
                        public void bag3() throws Exception{
                                Random r = new Random();
                                synchronized(lo){
                                        Thread.sleep(300);
                                        System.out.println("第三个"+"="+(r.nextInt(10)+1));
                                }
                        }
                        public void bag4() throws InterruptedException{
                                Random r = new Random();
                                synchronized(lo){
                                        Thread.sleep(300);
                                        System.out.println("第四个"+"="+(r.nextInt(10)+1));
                                }
                        }
                        public void bag5() throws Exception{
                                Random r = new Random();
                                synchronized(lo){
                                        Thread.sleep(300);
                                        System.out.println("第五个"+"="+(r.nextInt(10)+1));
                                }
                        }
                }

作者: yaolv7    时间: 2016-5-13 17:12
用一个线程发红包,另外5个抢就可以了
作者: pal_xie    时间: 2016-5-13 22:42
抢红包不是要设定总额和红包数量么,然后5条线程去抢,输出多少钱,而且抢的是一次,不是像楼主这样,5条线程各自抢各自的




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