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();



        }