java - 如何先完成Thread_Square然后完成Thread_Cube

标签 java multithreading

任何人都可以帮助我.. 如何获得这样的输出

<小时/>

平方数

插入数字以获得正方形的值:2

数字 2 的平方是 4

立方体数量

插入数字以获得正方形的值:3

数字 3 的平方是 27

<小时/>

现在我得到这样的输出

<小时/>

平方数

插入数字以获得正方形的值:正方形的立方

插入数字以获得立方体的值:2

数字 2 的平方是 4

3

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

关于java - 如何先完成Thread_Square然后完成Thread_Cube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350064/

相关文章:

java - Mongo打开了太多的连接

java - 这种多线程迭代安全吗?

c++ - 锁定文件并避免同一进程访问它两次

Java多线程: Calling a method on an object that extends Thread

java - Quartz 调度程序在服务器启动时出现错误

java - Java 9.0.1 OpenJdk使JVM崩溃并出现AdaptiveWeightedAverage问题

Swift - 内部有后台线程的退出函数

java - java中带定时器的单线程程序

java - NoClassDefFound错误: org/glassfish/jersey/process/internal/RequestExecutorFactory

java - 使用处理实现用于聚光的 GLSL 着色器