Avatar
2
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
thu hồi 1 thread trong Java
em có 1 thread xử lý như sau :

while (true) {
   System.out.println("3");
   Thread.sleep(1000);
}

Làm thế nào để thu hồi thread này vậy ạ

  • Answer
thread
Remain: 5
2 Answers
Avatar
tvd12 Professional
tvd12 Professional
Khả năng là không có cách nào em ạ. Anh đã thử interrupt nhưng không được:

public class InterruptThread {

    public static void main(String[] args) throws Exception {
        Thread newThread = new Thread(() -> {
           while (true) {
               System.out.println("current thread: " + Thread.currentThread().getName());
           }
        });
        newThread.start();
        Thread.sleep(10);
        newThread.interrupt();
        while (true) {
            Thread.sleep(10);
        }
    }
}
  • 1
  • Reply
Avatar
Nguyễn Thái Sơn Professional
em cảm ơn anh, vậy nếu rơi vòng lặp vô hạn thì server đó mất luôn 1 thread đó. Giả sử server có 16 thread chỉ cần gọi 16 lần là server phải restart lại ạ
  • 0
  • Reply
  1. Anh cũng không rõ 1 server có tối đa bao nhiêu thread, tuy nhiên trong java mỗi thread chiếm đâu đó khoảng 2MB bộ nhớ nên nếu quá nhiều thread sẽ dẫn đến tốn bộ nhớ không cần thiết.
  2. Còn giả sử server có tối đa 16 thread thì không có nghĩa là chỉ cần gọi 16 lần là server sẽ phải restart, có thể sẽ chỉ đơn giản là thread thứ 17 sẽ không được tạo ra, nói chung anh chưa bao giờ tạo đến một số lượng max thread nên cũng không rõ em ạ. Một server anh tạo thường rất nhiều thread, thường sẽ là vài chục thread là đủ.
 –  tvd12 1639874202000