java多线程模仿发牌的小程序

package threadtest;


import java.util.*;


/**
 * desc:
 * User: weiguili([email protected])
 * Date: 13-11-12
 * Time: 下午2:24
 */
public class ThreadTest2 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        PokerSender pokers=new PokerSender();
        Players a=new Players("A",pokers);
        Players b=new Players("B",pokers);
        Players c=new Players("C",pokers);
        Players d=new Players("D",pokers);
        a.setNext(b);
        b.setNext(c);
        c.setNext(d);
        d.setNext(a);
        a.start();
    }
}
//扑克发牌器
class PokerSender {
    public final int POKER_NUM = 52;//一共52张
    public final boolean IS_RAMDOM = false;//牌是否随机打乱
    public final int PLAY_NUM =4;//玩家数量
    public int sendNum =0;//已经发了多少张牌
    private List poker = new ArrayList();//扑克
    public List>> allHanderCards = new ArrayList>>(); //收集所有人手中的牌
    public  int getNext(){
        return sendNum++;
    }
    PokerSender(){
        setPokers();
    }
    public void showAllCards(){
        System.out.println(allHanderCards);
    }
    public synchronized void setPokers(){//从新洗牌
        for(int i =0;i getPokersNum()- PLAY_NUM;
    }
    public int getPokersNum(){
        return poker.size();
    }
}


//线程(也就是玩家)
class Players extends Thread {
    private PokerSender pokers;//扑克
    private Players next;//下一家
    public List handerCards = new ArrayList(); //发到手的牌
    public Players(String name, PokerSender poker){
        this.setName(name);
        this.pokers =poker;
    }
    public void setNext(Players next){
        this.next=next;
    }
    public void setHanderCards(int cards){
        handerCards.add(cards);
    }
    public void cllectAll(){
        if(pokers.isLastTurn()) { //最后一轮,收牌。
            Map> map = new HashMap>();
            map.put(getName(),handerCards);
            pokers.allHanderCards.add(map);
        }
    }
    public void showCards(){
        if(pokers.isLastTurn()) { //最后一轮,该摊牌了。
            System.out.println(handerCards);
        }
    }


    public void run(){
        int sendNum= pokers.getNext();
        while(sendNum


你可能感兴趣的:(java多线程)