JAVA采用实现Runnable接口的多线程技术,用50个线程,生成10000个[1-1000]间的随机整数。
4个回答
展开全部
public class RandomNumber implements Runnable {
private final byte[] lock; // 同步对象锁
private Random random; // 用于生成随机数
private int sum; // 用于计算产生的随机数总数
public RandomNumber() {
lock = new byte[1];
random = new Random();
}
@Override
public void run() {
while (true) {
int rd = random.nextInt(1001); // 产生0 - 10000的随机数
if (rd == 0) {
continue;
} else {
if (sum >= 10000) {
return;
}
try {
Thread.sleep(1); // 为了效果更明显,当前线程睡1毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
// 获取到对象锁之后,需要判断sum的大小,因为此时sum可能已经为10000了
if (sum < 10000) {
sum++;
System.out.println(Thread.currentThread().getName()
+ " - 第" + sum + "个随机数:" + rd);
}
}
}
}
}
// main测试函数
public static void main(String[] args) throws Exception {
RandomNumber rn = new RandomNumber();
// 循环产生50个线程
for (int i = 0; i < 50; i++) {
new Thread(rn).start();
}
}
}
有问题再追问,一起学习探讨
private final byte[] lock; // 同步对象锁
private Random random; // 用于生成随机数
private int sum; // 用于计算产生的随机数总数
public RandomNumber() {
lock = new byte[1];
random = new Random();
}
@Override
public void run() {
while (true) {
int rd = random.nextInt(1001); // 产生0 - 10000的随机数
if (rd == 0) {
continue;
} else {
if (sum >= 10000) {
return;
}
try {
Thread.sleep(1); // 为了效果更明显,当前线程睡1毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
// 获取到对象锁之后,需要判断sum的大小,因为此时sum可能已经为10000了
if (sum < 10000) {
sum++;
System.out.println(Thread.currentThread().getName()
+ " - 第" + sum + "个随机数:" + rd);
}
}
}
}
}
// main测试函数
public static void main(String[] args) throws Exception {
RandomNumber rn = new RandomNumber();
// 循环产生50个线程
for (int i = 0; i < 50; i++) {
new Thread(rn).start();
}
}
}
有问题再追问,一起学习探讨
展开全部
设有:public class My_num implements Runnable
{
public void run()
{...} // 这里生成随机数,并保存
}
然后在交互类中:
public void create50Thread()
{
for (int i=0; i<50; i++)
{
new Thread(new My_num()).start();
}
}
{
public void run()
{...} // 这里生成随机数,并保存
}
然后在交互类中:
public void create50Thread()
{
for (int i=0; i<50; i++)
{
new Thread(new My_num()).start();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Threada implements Runnable{
public void run() {
// TODO Auto-generated method stub
Random random=new Random();
for(int i=0;i<=10000;i++){
System.out.println(random.nextInt(1000));
}
}
public static void main(String[] args) {
ExecutorService e=Executors.newCachedThreadPool();
for(int a=0;a<=50;a++)
e.execute(new Threada());
e.shutdown();
}
}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Threada implements Runnable{
public void run() {
// TODO Auto-generated method stub
Random random=new Random();
for(int i=0;i<=10000;i++){
System.out.println(random.nextInt(1000));
}
}
public static void main(String[] args) {
ExecutorService e=Executors.newCachedThreadPool();
for(int a=0;a<=50;a++)
e.execute(new Threada());
e.shutdown();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
留个邮箱,工程发你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询