2012-02-13 5 views
1

안녕 사람이있는 메신저 5 개 이상의 테이블에서 데이터를 가져 오는 ..가장 좋은 방법은

가 내가 일을 얻기 위해 자바 스윙과 MSSQL 2005를 사용하는 채팅 프로그램을 개발하는 메신저 자바 스윙 응용 프로그램에 영향을주지 않고 MSSQL 데이터를 검색 할 그것은 2 초마다 새 메시지를 확인하는 자바에서 타이머를 사용하지만 .. 문제는 그것이 내 애플 리케이션의 성능과 부드러움에 영향을 미칩니다.

그래서 어떤 성능을 향상 스레드를 사용했는데 .. 거기에 다른 새로운 메시지 및 사용자 가용성 확인이 한 부분에서 이루어지며 응용 프로그램이 다른 부분에서 원활하게 실행되도록이 작업을 수행하는 방법은 무엇입니까?

+0

그래서이 채팅 프로그램의 클라이언트가 데이터베이스를 제어하는 ​​서버 프로그램에 연결하고 있습니까? 따라서 본질적으로 클라이언트는 서버 프로그램에 연결되어 누군가가 메시지를 보낸 경우 서버 프로그램에 요청합니다. 클라이언트를 직접 연결하고 서버에 사용자 친구 정보 만 저장하는 것이 더 좋은 아이디어라고 생각합니다. 그러나 이런 식으로 구현하지는 못했습니다. – thatidiotguy

답변

3

타이머는 백그라운드에서 정기적 인 작업을 실행하는 데 사용하는 올바른 방법입니다. 후드에서는 별도의 스레드를 사용하여 작업을 실행하므로 스레드를 직접 사용하지 않아도됩니다. Swing 응용 프로그램의 속도가 느린 것은 대개 EDT (Event Dispatch Thread)에서 장기간 실행되는 작업 때문입니다. UI를 업데이트 할 데이터가 있으면 타이머 태스크가 EDT에 Runnable을 넣을 가능성이 높습니다. 그 일을 확인하고 UI 업데이트 만하고 백그라운드 작업에서 수행 할 수있는 다른 작업을 수행하지 않도록하십시오. UI 업데이트 방법의 효율성을 확인하십시오.

Threads and Swing에 대한 Java 설명서와 Improve Application Performance With SwingWorker에 대한이 기사 (이 마지막 기사는 Timer가 아니라 SwingWorker에 대해 이야기하지만 EDT에서 해결 방법을 찾는 개념은 동일합니다.)

일부 코드를 게시하면 문제를보다 자세히 지적 할 수 있습니다.

+2

+1, 위의 모든 개념을 설명하는 [동시성의 동시성] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)의 스윙 튜토리얼에 대한 링크도 추가합니다. 자세한 세부 사항. – camickr