Giám sát trạng thái Thread trong Java
Miêu tả vấn đề
Cách giám sát trạng thái thread trong Java?
Giải pháp
Ví dụ sau minh họa cách giám sát trạng thái thread bởi kế thừa lớp Thread và sử dụng phương thức currentThread.getName() trong Java.
class MyThread extends Thread{ boolean waiting= true; boolean ready= false; MyThread() { } public void run() { String thrdName = Thread.currentThread().getName(); System.out.println(thrdName + " starting."); while(waiting) System.out.println("waiting:"+waiting); System.out.println("waiting..."); startWait(); try { Thread.sleep(1000); } catch(Exception exc) { System.out.println(thrdName + " interrupted."); } System.out.println(thrdName + " terminating."); } synchronized void startWait() { try { while(!ready) wait(); } catch(InterruptedException exc) { System.out.println("wait() interrupted"); } } synchronized void notice() { ready = true; notify(); } } public class Main { public static void main(String args[]) throws Exception{ MyThread thrd = new MyThread(); thrd.setName("MyThread #1"); showThreadStatus(thrd); thrd.start(); Thread.sleep(50); showThreadStatus(thrd); thrd.waiting = false; Thread.sleep(50); showThreadStatus(thrd); thrd.notice(); Thread.sleep(50); showThreadStatus(thrd); while(thrd.isAlive()) System.out.println("alive"); showThreadStatus(thrd); } static void showThreadStatus(Thread thrd) { System.out.println(thrd.getName()+" Alive:="+thrd.isAlive()+" State:=" + thrd.getState() ); } }
Kết quả
Code trên sẽ cho kết quả sau:
main Alive=true State:=running
Bài học Bài tập Java phổ biến tại hoconline.club:
thread_trong_java.jsp
Bài viết liên quan