【发布时间】:2017-11-26 03:02:56
【问题描述】:
来自http://www.siddhartha.ac.in/downloads/JP_Lab_Record2.pdf。
编写实现多线程应用程序的 Java 程序,该应用程序具有 三个线程。第一个线程每秒生成随机整数 如果值是偶数,第二个线程计算数字的平方 和打印。如果值为奇数,第三个线程将打印该值 数的立方。
import java.util.*; class even implements Runnable { public int x; public even(int x) { this.x = x; } public void run() { System.out.println("New Thread "+ x +" is EVEN and Square of " + x + " is: " + x * x); } } class odd implements Runnable { public int x; public odd(int x) { this.x = x; } public void run() { System.out.println("New Thread "+ x +" is ODD and Cube of " + x + " is: " + x * x * x); } } class A extends Thread { public void run() { int num = 0; Random r = new Random(); try { for (int i = 0; i < 5; i++) { num = r.nextInt(100); System.out.println("Main Thread and Generated Number is " + num); if (num % 2 == 0) { Thread t1 = new Thread(new even(num)); t1.start(); } else { Thread t2 = new Thread(new odd(num)); t2.start(); } Thread.sleep(1000); System.out.println("--------------------------------------"); } } catch (Exception ex) { System.out.println(ex.getMessage()); } } } public class JavaProgram5 { public static void main(String[] args) { A a = new A(); a.start(); } }
在main 方法中,对于for 循环的每次迭代,都会创建两个新线程。是否可以在 for 循环的所有迭代中重用这两个线程?
谢谢。
【问题讨论】:
-
你为什么要用多个线程来做这个?您可能会遇到很多同步问题。为什么不让一个线程打印值?
-
@FredK 这听起来像是一个旨在创建同步问题的作业
-
@John 这是一项任务,但我的想法超出了任务范围。
-
按照惯例,类名以大写字母开头。
-
本课的主题是什么?例如是生产者和消费者吗?因为这确实是你应该在这里做的。
标签: java multithreading