「java线程发牌」java多线程发牌

博主:adminadmin 2022-11-30 09:25:07 56

本篇文章给大家谈谈java线程发牌,以及java多线程发牌对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java有几种实现线程的方式

java创建线程的方式有三种

第一种是继承Thread类 实现方法run() 不可以抛异常 无返回值

第二种是实现Runnable接口 实现方法run() 不可以抛异常 无返回值

第三种是实现CallableT接口,接口中要覆盖的方法是 public T call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值

第三种如何运行呢 Callable接口在util.concurrent包中,由线程池提交

import java.util.concurrent.*;

ExecutorService e = Executors.newFixedThreadPool(10); 参数表示最多可以运行几个线程

e.submit(); 这个里面参数传 实现Callable接口那个类的对象

菜鸟求解“Exception in thread "main" java.lang.NumberFormatException”

你的player玩家的手上的牌的类型应该是String字符串类型,而不是int整数类型,因为每张牌的类型是String类型,比如 红桃6

所以把 int[][] player = new int[4][12];改成String[][] player = new String[4][12];

并且把player[j][i] = Integer.valueOf(total[ranNum]);改成player[j][i] = total[ranNum];就改这两处就行了.

完整的Java发牌程序如下(改动的地方见注释)

import java.util.Random;

public class H8 {

 public static void main(String[] args) {

  String[][] player = new String[4][12];//这里 int[][] player = new int[4][12];改成String[][] player = new String[4][12];

  int leftNum = 54;

  int ranNum;

  Random random = new Random();

  String[] a1 = {"黑桃", "红桃", "梅花", "方片"};

  String[] a2 = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

  String[] a3 = {"小王", "大王"};

  String[] total = new String[54];

  total[52] = a3[0];

  total[53] = a3[1];

  for (int i = 0; i  52; i++) {

   total[i] = a1[i % 4] + a2[i / 4];

  }

  for (int i = 0; i  12; i++) {

   for (int j = 0; j  player.length; j++) {

    ranNum = random.nextInt(leftNum);

    player[j][i] = total[ranNum];//这里player[j][i] = Integer.valueOf(total[ranNum]);改成player[j][i] = total[ranNum];

    total[ranNum] = total[leftNum - 1];

    leftNum--;

   }

   }

   for (int i = 0; i  player.length; i++) {

    for (int j = 0; j  player[i].length; j++) {

     System.out.print(" " + player[i][j]);

    }

    System.out.println();

   }

   for (int i = 0; i  6; i++) {

    System.out.print(" " + total[i]);

   }

   System.out.println();

 }

}

运行结果

 红桃6 红桃5 红桃2 黑桃K 红桃9 梅花A 小王 红桃4 黑桃Q 梅花7 黑桃10 黑桃A

 方片3 方片Q 红桃10 红桃A 梅花5 梅花10 红桃7 黑桃3 黑桃2 梅花6 方片6 大王

 红桃K 黑桃J 黑桃8 红桃J 方片K 方片10 方片7 黑桃6 梅花3 梅花8 红桃Q 梅花9

 梅花4 梅花Q 方片A 黑桃7 黑桃5 红桃3 方片4 红桃8 方片2 方片5 黑桃9 方片8

 方片9 梅花2 梅花K 梅花J 黑桃4 方片J

谁用java做过麻将

简单的说一下,页面这个没问题。swing。

就是业务逻辑方面的,

业务逻辑我感觉一步一步的来,也不会太难。

首先,分牌,这个设个list链表,里面包含麻将所有的对象,随机分配。

第二出牌,一人一张,设个标记位,4个线程,一个出牌之后改标记位让下一个线程运行。

第三判断,手下判断是否胡了,然后再判断是否杠上,然后判断。。。。。

当然,实际做的过程中会很多未知的问题,慢慢做吧。

其实解决这些未知的问题才是收获最大的地方。

JAVA斗地主如何实现发牌和出牌功能

用随机的方式生成54张牌(即数字或者其他方式),按顺时针方向,依次给每个人一个数字。直到剩最后三张。

出牌:先判断出牌方选中的牌是否符合规则。是的话。则该人的数值列表中去掉相应的牌。桌面上显示它出示的牌。出完牌还得判断游戏是否结束。如果他的牌下完了。游戏就结束了

java多线程发送信息

1、定义一个stack,用于存放放送的数据

2、定义监控线程,用来判断该stack的大小,当stack小于某个值的时候(例如5000),就向数据库取数据

3、定义一个实现Runnable的类,用于执行发送信息。

4、取stack的数据时候,用一个synchronized方法即可,当stack为空的时候,就返回null

Java蜘蛛纸牌中用线程来实现什么

你可以这样想,Java程序是顺序执行的。

如果只有一个主线程的话,那么要是计算出牌、发牌这些后台操作前台显示就什么也做不了,那样你做的游戏,在程序后台做这些时候就处于假死状态。

为了让这些处理之间互相不干扰,就需要线程,让他们分别执行在不同的线程里,只在必要时进行数据共享和交换,这叫线程通信。

当然,这里只是举了一个简单例子,是显示和计算之间用不同线程,实际上你想做的任何事都可以用线程来做,这样可以充分利用CPU,毕竟现在都是双核四核了,说的广一点,这属于”并行程序设计“了。

关于java线程发牌和java多线程发牌的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。