2013-06-09 2 views
1

정확히 2 개의 클래스를 작성해야합니다. 주 방법은 Main이고 다른 하나는 행렬 곱셈을 구현하는 Class1이라고 가정 해 봅시다. Class1이 파일에서 데이터를 읽고 스레드를 사용하여 행렬 곱셈을 수행하기를 원합니다.Java 다중 스레드 - 단일 인스턴스에 매개 변수 전달

여러 인스턴스를 만들고 생성자에 매개 변수를 전달할 수 있지만 필요한 것은 Class1 인스턴스를 만들고 파일을 한 번 읽고 여러 스레드에서 계산 부분을 실행하는 것입니다.

그것은 잘못이다, 그러나 가지 매개 변수와 함께 실행 방법을 통과해야한다 : 당신이 run() 메소드를 오버라이드 (override)하지만

public class Main { 
    public static void main(String[] args) { 

     Class1 c = new Class1(); 

     ArrayList <Thread> a = new ArrayList<>(); 

     for (int i = 0; i < 4; i++) { 
      a.add(i, new Thread(c)); 
     } 

     for (int i = 0; i < 4; i++) { 
      a.get(i).start(index1,index2); 
     } 
    } 
} 
+0

[Java 동시성] (http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html) –

+1

http://stackoverflow.com/questions/877096/how-can- i-pass-a-parameter-to-a-java-thread –

답변

0

당신이 start() 메소드를 호출 할 필요가 자바에 새로운 스레드를 생성하십시오. 이로써

는 말은 :

class ClassA implements Runnable { 
... 
} 

//Creates new thread 
(new ClassA()).start(); 

//Runs in the current thread: 
(new ClassA()).run(); 

run()를 호출하면 현재 스레드에서 코드를 실행합니다.

public class MyThread implements Runnable { 

    public MyThread(Object parameter) { 
     // store parameter for later user 
    } 

    public void run() { 
    } 
} 

을 따라서이를 호출 :

0

당신은 스레드 객체에 생성자에 매개 변수를 전달해야 당신이 생성자를 만들어야합니다 상황에

Runnable r = new MyThread(param_value); 
new Thread(r).start(); 

을 같은

public MyThread(int x, int y){ 
// store parameter for later user 
} 

https://stackoverflow.com/a/877113/1002790