2012-12-02 4 views
-2

나는 정말로 바보 일지 모르지만 본질적으로 나는 버퍼와 쓰레드를 가지고있다.자바에서 쓰레드와 버퍼

나는 사용자로부터 메시지 묶음을 얻기 위해 버퍼를 만들었고, 끊임없이 버퍼에서 메시지를 얻기 위해 스레드를 만들고 싶다.

이 사운드는 매우 간단하지만 어떤 이유로 작동하지 않습니다.

버퍼와 스레드는 모두 일반 Java 클래스 (기본이 아님)입니다. 버퍼 및 DisplayThread.

나는 그들이 함께 일하기로되어있는 방법에 대해 머리를 맞지 않는 것 같습니다.

이게 맞습니까? 또는 나는 무엇인가 놓치고 있냐?

public class DisplayThread extends Thread{ 

    DisplayThread Thread = new DisplayThread(Buffer); 
    Thread.start(); 
    public void run(){ 
      while(true){ 
      //will do something   

    } 
    } 

} 

주 클래스에서 버퍼 개체를 만든 다음 해당 개체를 전달하려고했지만 여전히 작동하지 않습니다.

내가 무엇이 누락 되었습니까?! 그것은 아주 분명해야하지만 나는 그것을 전혀 볼 수 없다.

답변

0

당신은 기본적인 아이디어를 가지고 있지만, 왜 새로운 DisplayThread (Buffer)와 Thread.start() 물건을 클래스 본문에 넣을 지 모르겠습니다. 기본적으로 이러한 라인은 메소드에서 호출되어야합니다. 이 시나리오에서는

public static void main(String[] args){ 
    Buffer buffer = new Buffer(); 
    DisplayThread displayThread = new DisplayThread(buffer); 
    displayThread.start(); 
} 

, 당신은 버퍼 객체를 생성하고, DisplayThread에 전달되고 있습니다 예를 들어,이 홈페이지에서 호출 할 거 야, 말을하자, 당신은 이런 식으로 뭔가를 할 것입니다. 디스플레이 스레드에서, 당신은 버퍼의 인스턴스 변수를 만들 것이고, 생성자는과 같이, 그것을 설정 :

public class DisplayThread{ 
    Buffer buffer; 
    public DisplayThread(Buffer buffer){ 
     this.buffer = buffer; 
    } 
} 
+0

이 내가 필요 정확히이다. 나는 어디가 잘못 됐는지 이해하고 완전한 바보처럼 느껴. 나는 그것이 주류와 관련이 있다는 것을 알았지 만, 조각을 맞출 수 없었습니다. 정말 고맙습니다! – Kuga

+0

그리고 네, 이것이 완전히 신인 한 실수라는 것을 압니다. 나는 지금 braindead입니다. 다시 한번 감사드립니다! – Kuga

0

여기 가정 코드가 제공하는 정보를 기반으로하는 방법에 대한 내 생각이다. 어떻게 생각해? :

public class DisplayThread extends Thread{ 

private String[] buffer; 
public DisplayThread(String[] buffer) { 
    this.buffer = buffer; 
} 

public void run(){ 
    for(String str:buffer) 
     System.out.println(str); 
} 

public static void main(String args[]) { 
    String[] buffer = {"hello", "world"}; 
    DisplayThread thread = new DisplayThread(buffer); 
    thread.start(); 
} 

}