2010-07-05 37 views
6

Tôi đang thực hiện một số thường trình trong Java (1.5) + Swing, đó là một số damands thời gian. Cách tốt nhất để thực hiện định tuyến này bên ngoài chuỗi xoay, để tránh đóng băng giao diện người dùng?Java Swing - UI Freezing

Cảm ơn trước

+1

này có thể giúp: http://stackoverflow.com/questions/2564388/javas-swing- luồng –

+0

Thực ra liên kết đó tốt hơn nhiều so với câu trả lời của tôi ... –

+0

vâng, tôi đã đăng câu trả lời với liên kết này, nhưng bây giờ nó chỉ vô ích :) –

Trả lời

7

Lúc đầu đỏ mặt, hãy xem lớp SwingWorker. Khi bạn muốn làm cho mã mạnh mẽ hơn và có thể kiểm chứng, bạn có thể muốn di chuyển ra khỏi đó, nhưng nó là một khởi đầu đủ tốt đầu tiên.

Bạn có thể tải phiên bản Java 1.5 here. Với 1,6, nó là một phần của API chuẩn.

+0

Tôi chưa bao giờ sử dụng triển khai JDK, nhưng có vẻ như đã bị lỗi, hãy xem http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880336 –

+1

@Sylvain lỗi đó được đánh dấu là áp dụng cho 1,7, không 1.6. – Ash

+1

@Ash, điều này áp dụng từ 1.6u18, không chỉ 1.7 – Yishai

3

Sử dụng SwingWorker dĩ nhiên là ý tưởng hay và tôi khuyên bạn nên làm như vậy. Đồng thời viết tùy chỉnh javax.swing.Timer s và java.lang.Thread s.

Nhưng đừng quên sử dụng profiler - nó có thể giúp bạn tìm thấy nhiều sự cố. Giống như Swing thường gặp sự cố với Người nghe "chết" giữ một số tham chiếu không thể thu thập rác (dẫn đến phản hồi rất chậm hoặc đóng băng giao diện người dùng hoặc thậm chí rò rỉ bộ nhớ). Profiler sẽ giúp bạn điều tra nhu cầu bộ nhớ của các tình huống cụ thể khi sử dụng ứng dụng của bạn và do đó bạn có thể thực hiện tinh chỉnh ứng dụng của mình.