2012-11-25 5 views
0

개체에 "스레드 확장"이 있습니다.스레드가 작동하지 않습니다.

2 개의 버튼을 만들었습니다 : 스레드 객체 a는 A이고 객체 b는 B 스레드입니다. 문제는 스레드가 잘 A 나 B 만 누르면 작동하지만 A를 누른 후에 B를 누르면 작동하지 않습니다. 그리고 나는 그것을 해결할 수 없다. 제발, 어떻게 고칠 지 보여줘. 코드는 이것을 좋아합니다.

buttonA.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent arg0){ 
     thread(object a).run(); 
} 
buttonB.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent arg0){ 
     thread(object b).run(); 
} 
+7

1) 실제 코드가 아닙니다. 즉, 객체 및 객체 B는 컴파일되지 않습니다. 2) 지금까지 제공된 제한된 정보를 기반으로 어떻게 잘못되었는지 추측 할 수 있는지 잘 모르겠습니다. 저는 여러분이 더 많은 것을 말하고 더 많은 코드를 보여줄 필요가 있다고 생각합니다. 우리는이 문제를 이해하기 시작할 수 있도록하기 위해 [sscce] (http://sscce.org)를 선호합니다. 이해가 없다면 해결책이 없을 수 있습니다. a와 b가 무엇을하는지 누가 압니까? 주님은 "일하지 않는 것"이 ​​의미하는 바를 알고 있습니다. 우리는 현명하고 재능이 있지만 불행히도 독자는 신경 쓰지 않으며 표시되지 않은 코드에 대해서는 추측 할 수 없습니다. –

+4

자신의 설명을 기반으로, 나는 그의 새로 생성 된 스레드가 실제로 스레드로 실행되고 자신의 UI 스레드를 차단한다고 가정합니다. 하지만 네, 더 많은 컨텍스트가 도움이 될 것입니다. –

+1

기능을 추가하지 않는 한, Thread 클래스를 확장하는 것과 같은 추가 정보가 있습니다. [오히려'Runnable'을 구현하십시오 (http://www.go4expert.com/forums/showthread.php?t=4202) –

답변

8

아, 당신은 스레드에 run()하지 start()를 호출하고 있습니다. 이렇게하면 스레드가 백그라운드 스레드에서 코드를 호출하는 대신 Swing 이벤트 스레드에서 호출하게됩니다. 대신 start()으로 전화하십시오. 그게 도움이되지 않는다면, 더 나은 질문을하십시오.

+1

+1, 우리 의견에 "우리는 영리하고 재능이 있습니다." –

+1

+1 "독자를 신경 쓰지 마라"에 잘못이 있음 –

+0

알렉스 린치가 처음 이것을 보았습니다. 나는 이것에 대한 그의 최근의 좋은 답변 몇 가지를 선정했다. –

관련 문제