2013-02-07 3 views
1

안녕하세요 저는 직렬 포트를 읽고 쓰는 프로그램을 만들고 있습니다. 프로그램 시작시에 ReadSerialPort, WriteSerialPort, JWakeup 클래스를 호출합니다.병렬로 작동하는 두 클래스 동기화

내 문제는 : 내가 JWakeup에서 직렬 포트에 무엇인가 쓰는 동안 직렬 포트가 응답 할 때까지 기다리고 싶다.

public class MainClass{ 


public static void main(String args[]){ 

    new ReadSerialPort().OpenSerialPort(); 
    new WriteSerialPort().OpenSerialPort(); 

    new JWakeup().setVisible(true); 
}} 


public class JWakeUp extends JFrame implements ActionListener{ 


public JWakeUp() { 
    super("JWakeUp"); 

    //Other Code 

    new WriteSerialPort().writeDataToSerialPort("WritenString"); 

    //In this part I want to know when the class ReadSerialPort() 
    // will read the "readenString" 

}} 

답변

0

당신은 Semaphore semaphore = new Semaphore(0);와 해당 클래스 외부 세마포어를 생성하고 해당 클래스에 전달할 수 있습니다. ReadSerialPort가 semaphore.release()을 사용하고 ReadSerialPort 대기 JWakeUp 내부 그것은 일 semaphore.acquire()

+0

사용 마친 후. 고마워요. –

+0

semaphore.request()를 기다리는 동안 진행률 표시 줄을 표시 할 수 있는지 알고 계신가요? –

+0

은 해당 스레드가 비활성화되기 때문에 semaphore.acquire()로 대기중인 스레드가 아닙니다. – Abdul