黑马程序员技术交流社区

标题: java多线程模拟抢红包 [打印本页]

作者: lvshen9    时间: 2017-3-9 16:21
标题: java多线程模拟抢红包
[Java] 纯文本查看 复制代码
package myexam.test24;

import java.util.Random;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;


/*
* 问题2.模拟抢红包过程,生成5个红包(金额是随机生成的,范围在1-
* 10元之间)创建5个线程代表5个人,然后让这5个人去抢这5个红包,
* 每次抢红包需要300ms的时间,在控制台打印出 (xxx抢了xxx元
* (不限定每人抢的次数并且抢到红包后还可以接着抢,每次生成一个红包
*  )(10分)
*
*
*
*/
public class MyTest2 {

        public static void main(String[] args) {
                GetMoney getMoney=new GetMoney();
                Thread t1=new Thread(getMoney,"用户a");
                Thread t2=new Thread(getMoney,"用户b");
                Thread t3=new Thread(getMoney,"用户c");
                Thread t4=new Thread(getMoney,"用户d");
                Thread t5=new Thread(getMoney,"用户e");
               
                t1.start();
                t2.start();
                t3.start();
                t4.start();
                t5.start();
               
        }
       
}
class GetMoney implements Runnable{
       
        Random r=new Random();
        int num=0;
        @Override
        public void run() {
               
                        int money=r.nextInt(10-1+1)+1;
                        while(true){
                                synchronized(this){
                                        if(num==5)
                                try {
                                        Thread.sleep(300);
                                } catch (InterruptedException e) {
                                        // TODO 自动生成的 catch 块
                                        e.printStackTrace();
                                }
                                System.out.println(Thread.currentThread().getName()+"抢了"+money+"元");
                                num++;
                                        break;

                        }
                }
        }
       
}


作者: tong000    时间: 2017-3-9 16:58
这个可以有!





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