java 线程学习(4)

2014-11-24 03:14:13 · 作者: · 浏览: 1

/*

import java.util.concurrent.locks.*;

//当线程

class StopThread implements Runnable

{

private boolean flag=true;

public synchronized void run()

{

while(flag)

{

try

{

wait();

}

catch (InterruptedException e)

{

//处理动结状态

System.out.println(Thread.currentThread().getName()+"----Exception");

flag=false;

}

System.out.println(Thread.currentThread().getName()+"----run");

}

}

public void changeFlag()

{

flag=false;

}

}

class Test

{

public static void main(String[] args)

{

StopThread st=new StopThread();

Thread t1=new Thread(st);

Thread t2=new Thread(st);

t1.start();

t2.start(); www.2cto.com

int num=0;

while(true)

{

if(num++==60)

{

//如果线程在调用Object 类的wait()、wait(long)

//或wait(long, int) 方法,或者该类的join()、join(long)、

//join(long, int)、sleep(long) 或sleep(long, int) 方法过程中受阻,

//则其中断状态将被清除,它还将收到一个InterruptedException。

//st.changeFlag();

t1.interrupt();

t2.interrupt();

break;

}

System.out.println(Thread.currentThread().getName()+"-----"+num);

}

System.out.println("over");

}

}

//setDaemon(boolean on)将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,

//Java 虚拟机退出。

//join() t1.join()等待t1线程结束后正在运行的线程再运行。

//yield()暂停当前正在执行的线程对象,并执行其他线程。

*/

摘自 一路向北