Java가 여러 스레드 상태를 모니터링하는 간단한 사례

인스턴스는 다음과 같습니다.

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

/**
 *  
 * 
 * @author
 * 
 */
public class WatchThread {

 /**
 *  
 * 
 * @throws InterruptedException
 */
 public void testThread() throws InterruptedException {
 int threadNum = 10;
 //  countDown
 CountDownLatch threadSignal = new CountDownLatch(threadNum);
 //  
 Executor executor = Executors.newFixedThreadPool(threadNum);
 for (int i = 0; i < threadNum; i++) { //  threadNum 
  Runnable task = new TestThread(threadSignal);
  //  
  executor.execute(task);
 }
 threadSignal.await(); //  
 // do work
 System.out.println(Thread.currentThread().getName() + "+++++++ .");
 }

 /**
 *  
 */
 public static void main(String[] args) throws InterruptedException {
 WatchThread test = new WatchThread();
 test.testThread();
 }

 /**
 * 
 * @author jill
 * 
 */
 private class TestThread implements Runnable {
 private CountDownLatch threadsSignal;

 public TestThread(CountDownLatch threadsSignal) {
  this.threadsSignal = threadsSignal;
 }

 public void run() {
  System.out.println(Thread.currentThread().getName() + " ...");
  // do shomething
  System.out.println(" ::::" + threadsSignal.getCount());
  //  1
  threadsSignal.countDown();  //    finally  
  System.out.println(Thread.currentThread().getName() + " .  "
   + threadsSignal.getCount() + "  ");
 }
 }

}
이상의 이 자바가 여러 개의 스레드 상태를 감시하고 감시하는 간단한 실례는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기