歡迎您光臨本站 註冊首頁

Java認證:關於多線程組的控制

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
  class NewThread extends Thread{
  boolean suspendFlag;
  NewThread(String threadname, ThreadGroup tgOb){
  super(tgOb, threadname);
  System.out.println("New thread: " this);
  suspendFlag = false;
  start();
  }
  public void run(){
  try{
  for(int i=5;i>0;i--){
  System.out.println(getName() ": " i);
  Thread.sleep(1000);
  synchronized(this){
  while(suspendFlag){
  wait();
  }
  }
  }
  }catch(Exception e){
  System.out.println("Exception in " getName());
  }
  System.out.println(getName() "exiting.");
  }
  void mysuspend(){
  suspendFlag = true;
  }
  synchronized void myresume(){
  suspendFlag = false;
  notify();
  }
  }
  public class test {
  public static void main(String[] args) {
  // TODO Auto-generated method stub
  ThreadGroup groupA = new ThreadGroup("Group A");
  ThreadGroup groupB = new ThreadGroup("Group B");
  NewThread ob1 = new NewThread("one", groupA);
  NewThread ob2 = new NewThread("Tow", groupA);
  NewThread ob3 = new NewThread("three", groupB);
  NewThread ob4 = new NewThread("Four", groupB);
  System.out.println("Suspending Group A");
  Thread tga[] = new Thread[groupA.activeCount()];
  groupA.enumerate(tga);
  for(int i=0;i<tga.length;i ){
  ((NewThread)tga[i]).mysuspend();
  }
  try {
  Thread.sleep(4000);
  }catch(InterruptedException e){
  System.out.println("Main thread interrupted.");
  }
  System.out.println("Resuming Group A");
  for(int i=0;i<tga.length;i ){
  ((NewThread)tga[i]).myresume();
  }
  try {
  System.out.println("Waiting for threads to finish.");
  ob1.join();
  ob2.join();
  ob3.join();
  ob4.join();
  }catch (Exception e){
  System.out.println("Exception in Main thread");
  }
  System.out.println("Main thread exiting.");
  }
  }
  


[火星人 ] Java認證:關於多線程組的控制已經有315次圍觀

http://coctec.com/docs/java/show-post-59956.html