2010-02-10 27 views
5

Tôi đã tạo một ứng dụng Java đơn giản có JFrame và một vài JButton. Khi tôi cố gắng kiểm tra ứng dụng java bằng cách sử dụng JVMTI, tôi thấy rằng mặc dù tôi không tạo ra bất kỳ chủ đề rõ ràng nào nhưng chúng đã sinh ra rất nhiều.Các chủ đề này là gì khi một ứng dụng Java bắt đầu thực hiện?

tôi có thể tìm thấy những chủ đề sau:

  • DestroyJavaVM
  • AWT-EventQueue-0
  • AWT-Shutdown
  • AWT-XAWT- Daemon Chủ đề
  • Java2D Disposer- Daemon Chủ đề
  • Thread-0- Daemon Chủ đề [Tạo bởi JVMTI Agent]
  • Tín hiệu Dispatcher- Daemon Chủ đề
  • Finalize- Daemon Chủ đề
  • Reference Handler- Daemon Chủ đề

Hầu hết trong số họ đã trong trạng thái Runnable. Ai đó có thể cho tôi biết chức năng của các chủ đề này?

Trả lời

9

Các chủ đề này được sử dụng bởi các thư viện cơ bản để quản lý tiện ích con, hiển thị, vòng lặp sự kiện và hệ thống ống nước khác cần thiết cho ứng dụng đồ họa của bạn. Một ứng dụng GUI thường có rất nhiều bộ phận chuyển động và nếu bạn nhận thấy bạn không phải viết một cách rõ ràng bất kỳ mã nào để quản lý các phần này (ví dụ: cập nhật màn hình hoặc vẽ nút hoặc xử lý di chuyển chuột). Là tập hợp các chủ đề nền chịu trách nhiệm quản lý các phần này và làm cho nó dễ dàng nhất có thể để bạn tập trung vào logic ứng dụng của mình.

Các chủ đề này được sinh ra bởi các thư viện mà bạn sử dụng (ví dụ: AWT, Swing, v.v.) và thường tự làm sạch (và các tài nguyên mà họ quản lý) khi chấm dứt.

1

tôi có thể cho bạn biết một, và đoán tại ba ...

  • AWT-EventQueue-0

Đây là GUI/AWT/Swing chủ đề. Bất cứ điều gì bằng văn bản cho GUI phải được thực hiện trên chủ đề này! Đôi khi nếu tôi nghĩ rằng có một điểm mà một chủ đề MIGHT được ghi vào GUI, tôi sẽ đi đến điểm mà tôi nghĩ rằng tranh chấp có thể xảy ra và khẳng định rằng tên của chuỗi hiện tại khớp với "AWT-EventQueue-0" . Tôi thực sự muốn Sun đã phát hành một phiên bản "Debug" của thư viện đã khẳng định việc sử dụng luồng đúng trong tất cả các thành phần - nó sẽ tiết kiệm được rất nhiều đau đầu và lưu Java khi có một REP thực sự xấu cho các GUI bị lỗi khi nó thực sự là những người không hiểu về chủ đề này.

Đây là lẽ tất cả liên quan đến thu luồng rác:

  • Java2D Disposer- Daemon Chủ đề
  • Finalize- Daemon Chủ đề
  • Reference Handler- Daemon Chủ đề
Các vấn đề liên quan