Làm thế nào tôi có thể thấy số lượng các luồng trong một tiến trình Java?Cách lấy số lượng các luồng trong một quy trình Java
Trả lời
công cụ hữu ích để gỡ lỗi chương trình java, nó mang lại cho số lượng chủ đề và các thông tin khác có liên quan trên chúng:
jconsole <process-id>
Có một phương pháp tĩnh trên Thread
Lớp rằng sẽ trả lại số đề hoạt động kiểm soát bởi JVM:
Thread.activeCount()
Trả về số đề hoạt động trong nhóm chủ đề các thread hiện hành.
Ngoài ra, trình gỡ rối bên ngoài sẽ liệt kê tất cả các chuỗi đang hoạt động (và cho phép bạn tạm ngưng bất kỳ chuỗi nào) nếu bạn muốn theo dõi chúng trong thời gian thực.
java.lang.Thread.activeCount()
Nó sẽ trả về số chủ đề đang hoạt động trong nhóm chủ đề hiện tại.
tài liệu: http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#activeCount()
public class MainClass {
public static void main(String args[]) {
Thread t = Thread.currentThread();
t.setName("My Thread");
t.setPriority(1);
System.out.println("current thread: " + t);
int active = Thread.activeCount();
System.out.println("currently active threads: " + active);
Thread all[] = new Thread[active];
Thread.enumerate(all);
for (int i = 0; i < active; i++) {
System.out.println(i + ": " + all[i]);
}
}
}
ManagementFactory.getThreadMXBean().getThreadCount()
không giới hạn bản thân để các nhóm chủ đề là Thread.activeCount()
.
Tôi đã viết một chương trình để lặp tất cả Threads
tạo và in getState()
của mỗi Thread
import java.util.Set;
public class ThreadStatus {
public static void main(String args[]) throws Exception{
for (int i=0; i< 5; i++){
Thread t = new Thread(new MyThread());
t.setName("MyThread:"+i);
t.start();
}
int threadCount = 0;
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for (Thread t : threadSet){
if (t.getThreadGroup() == Thread.currentThread().getThreadGroup()){
System.out.println("Thread :"+t+":"+"state:"+t.getState());
++threadCount;
}
}
System.out.println("Thread count started by Main thread:"+threadCount);
}
}
class MyThread implements Runnable{
public void run(){
try{
Thread.sleep(2000);
}catch(Exception err){
err.printStackTrace();
}
}
}
Output:
java ThreadStatus
Thread :Thread[MyThread:0,5,main]:state:TIMED_WAITING
Thread :Thread[main,5,main]:state:RUNNABLE
Thread :Thread[MyThread:1,5,main]:state:TIMED_WAITING
Thread :Thread[MyThread:4,5,main]:state:TIMED_WAITING
Thread :Thread[MyThread:2,5,main]:state:TIMED_WAITING
Thread :Thread[MyThread:3,5,main]:state:TIMED_WAITING
Thread count started by Main thread:6
Nếu bạn loại bỏ dưới điều kiện
if (t.getThreadGroup() == Thread.currentThread().getThreadGroup())
Bạn sẽ nhận được các chủ đề dưới đây trong đầu ra quá, whi ch đã được bắt đầu bởi hệ thống.
Reference Handler, Signal Dispatcher,Attach Listener and Finalizer
.
Giải pháp chung không yêu cầu GUI như jconsole (không hoạt động trên các thiết bị đầu cuối từ xa), ps hoạt động đối với các quy trình không phải java, không yêu cầu cài đặt JVM.
ps -o nlwp <pid>
Sử dụng lệnh Linux Lên trên
top -H -p (process id)
bạn có thể nhận quá trình id của một chương trình bằng phương pháp này:
ps aux | grep (your program name)
ví dụ:
ps aux | grep user.py
- 1. Lấy số lượng hàng trong một kết quả Java
- 2. Số lượng tối đa các quy trình trong linux
- 3. Khi nào nên chọn một số quy trình trên các chuỗi trong Java?
- 4. Lấy ID luồng cho các chuỗi Java trong Linux
- 5. Cách lấy tên quy trình trong C++
- 6. Quy trình Java với luồng đầu vào/đầu ra
- 7. sản lượng giữa các quy trình khác nhau
- 8. Có cách nào nhẹ để có được số lượng Quy trình hiện tại trong Linux không?
- 9. Cách tạo quy trình trong Java
- 10. MPI: nhận số lượng nút (không phải quy trình) trong một bộ giao tiếp
- 11. cách lấy danh sách quy trình
- 12. FileLock trong java có an toàn trên nhiều luồng trong cùng một quy trình hoặc giữa các quy trình khác nhau hay cả hai?
- 13. Làm cách nào để lấy ID luồng chính của một quy trình (được biết bằng ID của nó)?
- 14. Số liệu thống kê trên luồng lớn các số nguyên trong java
- 15. Stracing để gắn vào một quy trình đa luồng
- 16. Gọi hệ thống để lấy danh sách các quy trình
- 17. Tăng số lượng chủ đề cho mỗi quy trình công nhân IIS
- 18. Ngã ba/Quy trình nhiều luồng | Bash
- 19. Bế tắc trong một chương trình java đơn luồng
- 20. Tăng số lên một mức năng lượng trong Java
- 21. cách AND và một số lượng lớn các mảng số?
- 22. Làm cách nào để đếm số lượng tay cầm đã mở thuộc về một quy trình nhất định?
- 23. Cách lấy số lớn nhất từ số lượng lớn các số?
- 24. Đa xử lý Python: làm cách nào để giới hạn số lượng quy trình chờ?
- 25. Số lượng tối đa các tham số trong một mảng Java
- 26. Lấy Tổng số lượng RAM trên một máy tính
- 27. số lượng bộ nhớ mà một chuỗi ghi trong java
- 28. Số lượng tối đa các quy trình được đăng ký toàn cầu
- 29. Làm cách nào để ngăn chặn các quy trình java dòng lệnh khỏi lấy cắp tiêu điểm trong OSX?
- 30. Quy trình giảm số Erlang
Các phương pháp khác cũng tốt, nhưng điều này hữu ích hơn. – ndemir