2014-01-25 15 views
0

任何人都可以帮助我.. 如何获得这样如何完成Thread_Square第一则Thread_Cube


平方数

插入数字输出来获得广场的价值:2

广场数字2是4

立方号码

插入数字让广场的价值:3

广场3号是27


现在我得到这样


平方数

插入数字输出来获得正方形值:Square Cube

插入号码以获得立方体的值: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(); 


     } 
    } 
+2

我理解这可能是某种形式的实践来​​适应线程和同步。但是用例并没有考虑到为什么使用线程的全部观点:实现**独立的**程序逻辑流。让两个线程按顺序执行一些任务是相矛盾的,因为那样你根本就不需要线程(至少不是那个任务)。您只需按照所需的顺序在一个线程中整齐地执行任务。线程完成任务意味着,你不关心结果到达的顺序。 – JensG

+1

@JensG我从我的讲师那里得到任务。编写一个有两个线程的程序。一个线程应该计算一个数字的平方,而另一个线程应该计算另一个数字的多维数据集。也许我认为我在使用线程时犯了错误,也许我不了解线程。我花了6个小时来解决这个问题。我是学生。我认为我必须学习很多关于线程和java的知识。感谢您的建议。 –

+0

所以最初的规范没有提出有关预期订单的任何内容,并且您添加了该部分? – JensG

回答

1

你有两个并行的线程中运行同时并行。对于第一个输出,您需要使用一个线程或强制第二个线程在完成第一个线程后启动。看到这一点:

Thread_Square obj1 = new Thread_Square(); 
obj1.start(); 

obj1.join(); 

Thread_Cube obj2 = new Thread_Cube(); 
obj2.start(); 
+0

感谢您的帮助。是工作。 –

1

等待到第一个线程结束使用join()

public static void main(String[ ] args) throws IOException, InterruptedException { 

      MultiThread obj1 = new MultiThread(); 
      obj1.start(); 
      obj1.join(); 

      ThreadCube obj2 = new ThreadCube(); 
      obj2.start(); 



     } 
相关问题