`
majie
  • 浏览: 75006 次
  • 来自: ...
社区版块
存档分类
最新评论

A类每0-2秒生成-100到100之间的随机整数。B类让一个计数器在A类生成负数的时候自减,并且在生成正数的时候自增。B

阅读更多
A类每0-2秒生成-100到100之间的随机整数。B类让一个计数器在A类生成负数的时候自减,并且在生成正数的时候自增。B类的计数器必须与A类同时实时更新。
把3种情况分别写出来:1,A与B在同一线程内;2,不同线程;3,不同进程
程序如下:

package practice2;

public class Practice2 {

 /**
  * @param args
  * @throws InterruptedException
  */
 /*
  * 类每0-2秒生成-100到100之间的随机整数。B类让一个计数器在A类生成负数的时候自减,
  * 并且在生成正数的时候自增。B类的计数器必须与A类同时实时更新。 把3种情况分别写出来:1,A与B在同一线程内;2,不同线程;3,不同进程
  */
 //单线程版
 public static void main(String[] args) throws InterruptedException {
  // TODO Auto-generated method stub
  C c = new C();
  System.out.println("程序开始........");
  new Thread(c).start();

 }

}

class A {
 private static int x;

 public static void generateValue() {
  // 生成-100到100之间的随机整数
  int y;
  y = (int) (Math.random() * 2 + 1);
  if (y % 2 == 1)
   x = (int) ((Math.random() * 100 + 1));
  else
   x = -(int) ((Math.random() * 100 + 1));

 }

 public static int getX() {
  return x;
 }
}

class B {
 private static int sum;

 public static void plus(int x) {
  // 求和
  sum = sum + x;
 }

 public static int getSum() {
  return sum;
 }

}

//
class C implements Runnable {

 public void run() {
  // TODO Auto-generated method stub
  while (true) {
   int x = (int) ((Math.random() * 2 + 1) * 1000);
   try {
    Thread.sleep(x);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   System.out.println("您产生的数字是:");
   A.generateValue();
   System.out.println(A.getX());
   System.out.println("和是:");
   B.plus(A.getX());
   System.out.println(B.getSum());
  }
 }

}

多线程序


package practice2;

public class Practice2duo {

 /**
  * @param args
  */
 /*
  * 类每0-2秒生成-100到100之间的随机整数。B类让一个计数器在A类生成负数的时候自减,
  * 并且在生成正数的时候自增。B类的计数器必须与A类同时实时更新。 把3种情况分别写出来:1,A与B在同一线程内;2,不同线程;3,不同进程
  */
 //多线程版
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  CDuo c = new CDuo();
  System.out.println("程序开始........");
  new Thread(c).start();
  new Thread(c).start();
 }

}

class ADuo {
 private static int x;

 public static void generateValue() {
  // 生成-100到100之间的随机整数
  int y;
  y = (int) (Math.random() * 2 + 1);
  if (y % 2 == 1)
   x = (int) ((Math.random() * 100 + 1));
  else
   x = -(int) ((Math.random() * 100 + 1));

 }

 public static int getX() {
  return x;
 }
}

class BDuo {
 private static int sum;

 public static void plus(int x) {
  // 求和
  sum = sum + x;
 }

 public static int getSum() {
  return sum;
 }

}

class CDuo implements Runnable {
 

 public void run() {
 String str = new String("");
  // TODO Auto-generated method stub
  while (true) {
   synchronized (str) {
    int x = (int) ((Math.random() * 2 + 1) * 1000);
    try {
     Thread.sleep(x);
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    System.out.println("您产生的数字是:");
    A.generateValue();
    System.out.println(A.getX());
    System.out.println("和是:");
    B.plus(A.getX());
    System.out.println(B.getSum());
   }
  }
 }

}

 

分享到:
评论

相关推荐

    上海电机学院C语言实训答案

    程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到...

    java小程序汇总

    该程序通过`while`循环实现了1到100之间交替正负数的求和操作。 - 使用变量`a`作为计数器,`d`存储求和结果。 - 通过`switch`语句判断`a`是偶数还是奇数,从而决定是在`d`上加还是减当前值。 - 每次循环结束时,`a`...

    选择判断题库.doc

    - **解析**: `A=fix(100+101*rand(5,6))`表示生成一个5×6的矩阵,其中每个元素为[100,201)范围内的随机整数。 ### 16. 矩阵元素操作 - **知识点**: 可以使用矩阵运算符来对矩阵的元素进行统一操作。 - **解析**: `...

    delphi id 生成

    2. **随机数生成**:生成随机ID时,可以使用`Random`函数,它会根据系统时间生成一个伪随机数。例如,你可以这样生成16位随机ID: ```delphi var RandomID: Word; begin Randomize; RandomID := Random(65536)...

    二级最终完整 上机100题.txt

    根据给定文件的信息,我们可以总结出以下几个主要的知识点: ### 1. 函数 `void fun(unsigned long *n)` 的解析 ...- 对于每一个新节点,随机生成一个介于 0 到 `m-1` 之间的数据值。 - 最后返回链表的头结点指针。

    PTA实验LB05-LB08.pdf

    - 程序首先随机生成一个100以内的数作为目标。 - 用户进行猜测,程序根据猜测值与目标的关系提示“Too big”(大了)、“Too small”(小了)或“Bingo!”(猜对了)。 - 程序需要统计猜测次数,如果一次猜中,...

    Java开发工程师上机笔试题.docx

    可以使用`Random`类生成1到100之间的随机数。 2. 初始化两个变量,分别作为当前最大值和最小值,初始值设为第一个生成的数。 3. 遍历剩余的9个数,与当前最大值和最小值比较,更新这两个变量。 4. 输出最大值和...

    java编程练习题

    但是,这个程序有一个错误:初始时,max和min都被赋值为0,这可能导致错误的结果,特别是当数组中所有元素都是负数时。正确做法是初始化max为数组的第一个元素,min为数组的第二个元素。 2. **找完数**: 完数是指...

    201711010202王汝芸17计2报告51

    通过`Math.random()`函数可以生成0到1之间的随机浮点数,通过乘以特定数值并加上起始值可以得到指定范围内的随机数。在5.2题中,使用这种方法生成两个1到15之间的随机数,让用户进行加法运算。 7. **变量的使用**...

    windows汇编程序入门

    - **无符号整数**使用所有位来表示数值大小,范围从0到2^n-1。 - **带符号整数**采用二进制补码表示,最高位为符号位,0表示正数,1表示负数。 - **4.2 符号扩展** - 符号扩展是指将一个较短的整数扩展为较长的...

    C语言编程题精选.pdf

    比如,100.0, 50.0, 10.0, 5.0, 1.0, 0.5, 0.1, 0.05, 0.01分别代表了不同的精度级别,通过减去这些数值来统计每个级别的计数器(a1到a9)。 4. 数组操作、随机数生成和数据统计: 第四个代码片段尝试生成一组...

    2010年全国计算机考研统考试题与解答

    - **A项**(dcebfa):合法,因为每退栈两次之后都会有一个进栈操作。 - **B项**(cbdaef):合法,同样遵循了进退栈交替且没有连续三次退栈的原则。 - **C项**(dbcaef):合法,满足所有条件。 - **D项**(afedcb...

    全国计算机等级考试一级模拟试题2.pdf

    11. 16位二进制可以表示的整数范围是-32768到32767或0到65535,取决于是否考虑负数和无符号数。 12. 控制键(CTRL)在键盘上常与其他键组合使用,实现特定功能。 13. 计算机执行一条指令所需的时间称为指令周期,是...

    计算机导论复习.pdf

    十进制转二进制:125 ÷ 2 = 62...1,62 ÷ 2 = 31...0,31 ÷ 2 = 15...1,15 ÷ 2 = 7...1,7 ÷ 2 = 3...1,3 ÷ 2 = 1...1,1 ÷ 2 = 0...1,所以(125)10 = (1111101)2。八进制转换是每三位二进制对应一位八...

    计算机组成原理基础选择题及答案.pdf

    128M*32位内存,若以字节编址,每个地址对应一个字节(8位),所以地址线数量为2^27=128M,因此需要27根地址线。 4. 存储容量与寻址范围:64KB的存储容量,若按字节编址,寻址范围是0到64KB-1,即0到2^16-1;若按字...

    2010年计算机组成原理清华大学本科试题.pdf

    题目中给出了指令的二进制形式和执行前寄存器r0的值,要求计算执行后的PC(程序计数器)值,这涉及到指令解码和控制信号的生成。 4. **指令寻址方式**:常见的寻址方式包括立即寻址、直接寻址、间接寻址、相对寻址...

    guess-a-number

    "guess-a-number" 是一个基于JavaScript的简单游戏项目,它涉及到基本的编程概念,如条件语句、循环、随机数生成以及用户交互。在这款游戏中,计算机将随机选择一个数字,然后玩家需要通过一系列尝试来猜出这个数字...

    计算机组成原理期末考试简答题重点.doc

    表示一个四位十进制整数至少需要14位二进制数,不含符号位。 9. **浮点数表示**: 在16位浮点数表示中,最大浮点数为2^(1-2^(-9)),最小浮点数为-2^(1-2^(-9))。 10. **ASCII码与校验码**: 字符"F"的ASCII码为...

    计算机组成原理自测练习题.pdf

    32. **存储单元地址**:每个存储单元都有一个唯一的地址。 33. **动态DRAM**:需要定期刷新以保持数据。 34. **补码加法**:两个补码表示的数相加,其结果的补码等于这两个补码的和。 35. **算术移位**:有符号数...

Global site tag (gtag.js) - Google Analytics