程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> [JAVA100例]066、線程控制

[JAVA100例]066、線程控制

編輯:JAVA編程入門知識

  

/**
 * <p>Title: 線程控制</p>
 * <p>Description: 實現對線程的控制,中斷、掛起、恢復、停止</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Filename: threadCtrl.java</p>
 * @version 1.0
 */
public class threadCtrl{
 public static void main(String [] main){
   new threadCtrl();
 }
/**
 *<br>方法說明:構造器,控制其它線程
 *<br>輸入參數:
 *<br>返回類型:
 */
 threadCtrl(){
  try{
   Thread tm = Thread.currentThread();
   threadchild td = new threadchild();
   td.start();
   tm.sleep(500);
   System.out.println("interrupt child thread");
   td.interrupt();


  System.out.println("let child thread wait!");
   //td.wait();
   //td.suspend();
   tm.sleep(1000);


  System.out.println("let child thread working");
   td.fauxresume();
   //td.resume();
   tm.sleep(1000);
   td.runflag = false;
   System.out.println("main over..............");
  }catch(InterruptedException ie){
   System.out.println("inter main::"+ie);
  }catch(Exception e){
   System.out.println("main::"+e);
  }
 }


  }
/**
 *<br>類說明:被控線程類
 */
 class threadchild extends Thread {
  boolean runflag = true;
  boolean suspended = true;
  threadchild(){
  }
  public synchronized void fauxresume(){
   suspended = false;
   notify();
  }
  public void run(){
   while(runflag){
    System.out.println("I am working..............");
    try{
     sleep(1000);
    }catch(InterruptedException e){
     System.out.println("sleep::"+e);
    }
    synchronized(this){
    try{
     if(suspended)
      wait();
    }catch(InterruptedException e){
     System.out.println("wait::"+e);
    }
    }
   }
   System.out.println("thread over...........");
  }
 }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved