2011-07-12 31 views

Trả lời

11

Bạn có 2 cách để thực hiện. Cả hai đều khá đơn giản:

  • Cũ cách: lấy thread group gốc bạn có thể truy cập vào Thread.currentThread().getGroup() ..getParent() trong vòng lặp. và gọi enumerate(Thread[])

  • mới hơn (chậm hơn). for (Thread t : Thread.getAllStackTraces().keySet()) if (t.getId()==id)...

Phương pháp đầu tiên có một vấn đề nhỏ mà do một lỗi trong ThreadGroup.destroy(), một ThreadGroup có thể không liệt kê bất cứ điều gì cả.

Thứ hai chậm hơn và có lỗ hổng bảo mật.

-1

Bạn có thể sử dụng đoạn mã sau để có được tên Thread (Đối với ví dụ tôi muốn để có được tên của Chủ đề có trong bế tắc)

ThreadMXBean threadMB = ManagementFactory.getThreadMXBean(); 
long threadIds[] = threadMB.findDeadlockedThreads(); 
for (long id : threadIds) { 
    System.out.println("The deadLock Thread id is : " + id 
          + " > " 
          +  
    threadMB.getThreadInfo(id).getThreadName()); 
} 
Các vấn đề liên quan