changer.java

来自「此为java开发方面的算法」· Java 代码 · 共 64 行

JAVA
64
字号
/****************************************************
 * 参考书籍:<<Java面向对象编程>>                   *
 * 技术支持网址:www.javathinker.org                *
 ***************************************************/
package mythread.problem;


public class Changer extends Thread{

  private String mycolour;

  public Changer(String mycolour){this.mycolour=mycolour;}
  public String getColour(){return mycolour;}
  public void setColour(String c){mycolour=c;}

  public void run(){
    doSomething();
  }

   public  void doSomething(){
    for(int a=0;a<50;a++)
    {
      try{
      Thread.sleep(100*((int)Math.random()));
      }catch(Exception e){}

      synchronized(this){
        Thread[] ts=new Thread[Thread.activeCount()];
        Thread.enumerate(ts);
        Changer currThread=(Changer)(Thread.currentThread());
        Changer anotherThread=null;
        for(int i=0;i<ts.length;i++)
        {
          if(ts[i]!=currThread && ts[i] instanceof Changer ){anotherThread=(Changer)ts[i];break;}
        }

        System.out.println(currThread.getName()+" currthread: "+currThread.getColour());
        System.out.println(currThread.getName()+" anotherthread: "+anotherThread.getColour());
        String tmp=currThread.getColour();
        currThread.setColour(anotherThread.getColour());
        anotherThread.setColour(tmp);
        System.out.println(currThread.getName()+" afterchanged: "+currThread.getColour());
      }
    }
  }

public static void main(String args[]){
  Changer  t1=new  Changer("white");
  Changer  t2=new  Changer("black");
  Changer  t3=new  Changer("green");
  t1.setName("t1");
  t2.setName("t2");
  t3.setName("t3");



  t1.start();
  t2.start();
  t3.start();


}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?