Java 如何先完成正方形,然后完成立方体
任何人都可以帮助我。。 如何获得这样的输出Java 如何先完成正方形,然后完成立方体,java,multithreading,Java,Multithreading,任何人都可以帮助我。。 如何获得这样的输出 平方数 插入数字以获取平方的值:2 2的平方是4 立方体数 插入数字以获取平方的值:3 数字3的平方是27 现在我得到这样的输出 平方数 插入数字以获取正方形的值:方形立方体 插入数字以获取多维数据集的值:2 2的平方是4 三, 3号的立方体是27 这是我的代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputS
平方数 插入数字以获取平方的值:2 2的平方是4 立方体数 插入数字以获取平方的值:3 数字3的平方是27
现在我得到这样的输出
平方数 插入数字以获取正方形的值:方形立方体 插入数字以获取多维数据集的值:2 2的平方是4 三, 3号的立方体是27
这是我的代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
class Thread_Square extends Thread{
private int sumSquare;
public void Thread_Square(){
BufferedReader square = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Square Number");
System.out.print("Insert Number to get Value of Square: ");
String inputSquare = null;
try {
inputSquare = square.readLine();
} catch (IOException ex) {
Logger.getLogger(Thread_Square.class.getName()).log(Level.SEVERE, null, ex);
}
int numSquare = Integer.parseInt(inputSquare);
sumSquare=numSquare*numSquare;
System.out.println("Square of number " +numSquare +" is " +sumSquare);
}
public void run()
{
Thread_Square();
}
}
class Thread_Cube extends Thread{
public void Thread_Cube(){
int sumCube;
BufferedReader Cube = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Square Cube");
System.out.print("Insert Number to get Value of Cube: ");
String inputCube = null;
try {
inputCube = Cube.readLine();
} catch (IOException ex) {
Logger.getLogger(Thread_Square.class.getName()).log(Level.SEVERE, null, ex);
}
int numCube = Integer.parseInt(inputCube);
sumCube=numCube*numCube*numCube;
System.out.println("Cube of number " +numCube +" is " +sumCube);
}
public void run()
{
Thread_Cube();
}
}
class Thread_Question1 {
public static void main(String[] args) throws IOException {
Thread_Square obj1 = new Thread_Square();
obj1.start();
Thread_Cube obj2 = new Thread_Cube();
obj2.start();
}
}
有两个并发线程同时并行运行。对于第一个输出,您需要有一个具有该流的线程,或者在完成第一个线程后强制第二个线程启动。见此:
Thread_Square obj1 = new Thread_Square();
obj1.start();
obj1.join();
Thread_Cube obj2 = new Thread_Cube();
obj2.start();
使用
join()
等待第一个线程完成:
我理解这可能是一种习惯线程和同步的实践。但是这个用例没有抓住要点,为什么使用线程:实现独立的程序逻辑流。让两个线程以串行顺序执行某些任务与此相矛盾,因为这样您就根本不需要线程(至少不需要用于该任务)。您只需按照所需的顺序,在一个线程中,整齐地一个接一个地执行任务。让线程执行任务意味着,您不关心结果到达的顺序。@JensG我从讲师那里得到任务。编写一个有两个线程的程序。一个线程应该计算一个数字的平方,而另一个线程应该计算另一个数字的立方。也许我认为我在使用线程时犯了错误。也许我不了解线程。我也花了6个小时来解决这个问题。我是一名学生。我想我必须学习很多关于线程和java的知识。谢谢你的建议。原来的规格没有说明预期的订单,你添加了那个部分?@JensG是的,我添加了那个部分。它什么也没说。实际上,这是我课题的练习。网络编程。完整的问题是“编写一个有两个线程的程序。一个线程应该计算一个数字的平方,而另一个线程应该计算另一个数字的立方。也许我认为我在使用线程时犯了错误。显示数字的平方和立方”我猜问题出在其他地方:通过将值打印到控制台上,线程可能会发生冲突,因为控制台是一个全局/共享资源。我不了解Java的细节,但当两个线程同时在同一控制台上打印时,输出可能会变得混乱。两种解决方案:(1)将结果发送回主线程,让他打印所有内容;(2)通过某种同步对象同步对控制台的访问。我建议将(1)和(2)作为练习来实现,以掌握线程交互和同步的概念。
public static void main(String[ ] args) throws IOException, InterruptedException {
MultiThread obj1 = new MultiThread();
obj1.start();
obj1.join ();
ThreadCube obj2 = new ThreadCube();
obj2.start();
}