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());
}
}
}
}
分享到:
相关推荐
有时候想要实现通过js Math.random() 方法来实现获取指定区间的随机数。
随机数生成整数1-100,并把连续大于某个数n次的数输出
计算机在规定的区间随机生成一个整数,当猜的数字大于随机生成的数字时,提示“猜大了”,当猜的数字小于随机生成的数字时,提示“猜小了”,一直循环到猜对数字为止。用while循环语句来实现猜数字小游戏
设a 和b是2 个正整数,a≤b,找出a 和b之间约数个数最多的数x。 算法设计: 对于给定的2 个正整数a <= b 计算a 和b之间约数个数最多的数。 可以保证a和b都不超过2000000. 数据输入: 输入数据有2个正整数a和b。 ...
用java实现,随机产生100个0到9的整数(这里以二维数组显示),并计算出每个数出现的次数!
第一行为一个整数C,表示有C组测试数据,接下来有2*C行数据,每组测试数据占2行,每组测试数据第一行是1个整数n,表示有n个整数,接下来一行有n个整数,它们之间用空格隔开. Output 你的输出应该有C行,即每组...
Python编写一个猜数程序:随机生成一个整数,再从键盘输入一个整数。若两个整数相等表示猜中,否则继续输入整数进行猜数,直到猜中为止。
随机生成5个不大于100的整数存入一数组,计算该数组的平均值,输出该5个整数及平均值
1. `generate_random_number()`: 生成一个随机整数,范围在1到100之间。 2. `generate_random_operator()`: 从加减乘除四个运算符中随机选择一个。 3. `generate_math_question()`: 生成一个随机的四则运算题目,...
//随机生成设置范围内的整数,并指定是否随机加入负数 static int sumIntger(int min, int max, boolean needNegative(如果需要随机生成负数, 填true)) //随机生成指定范围内的小数,并指定是否随机添加负数 static ...
random-int - 产生一个随机整数
义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。编程: (1) 判断两个inergerSet类对象S1和S2是否相等。提示:集合相等的前提是所有元素相等。 (2)...
程序首先使用random模块的randint()函数生成10个0-100之间的随机整数,存储在numbers列表中。 然后使用冒泡排序算法对numbers列表进行排序。冒泡排序重复地遍历列表,比较相邻元素并交换位置,直到列表已排序。 虽然这...
老二牛车教育程矢 Axure夜话之程序员眼中的原型设计视频教程之生成随机范围的整数.zip
可以生成指定范围内制定个数的随机数,暂时不支持小数
2、设计一个线程类GenerateWeather,用于生成天气数据。模拟生成10次天气数据,每次生成天气数据需要5秒的时间。 3、设计一个线程类ReadWeather,用于读取天气数据。模拟读取10次天气数据,每次读取数据需要0.1秒的...
将一个整数S随机拆分为N个在min~max之间的整数
C语言实现随机产生10个50~100的数的程序实现
2、Math.random() 方法可返回介于 0 ~ 1 之间的一个随机数 例如我们要取a-b区间的数字,并赋值给lanrenzhijia变量,则公式为: var lanrenzhijia = Math.floor(Math.random()*(b-a)+ a); 举个...
生成一个1000以内随机正整数,输入一个数,判断大小,知道猜到的数与生成的数正好相等,程序结束(vs2010 vb)