package duoxiancheng;
class Stop implements Runnable
{
private boolean flag=true;
public synchronized void run()//此处没有同步会发生异常
{
while(flag)
{
try{
wait();
}
catch(InterruptedException e)//当出现异常中断时执行
{
System.out.println(Thread.currentThread().getName()+"...E");
flag=false;//此标记用来控制循环结束
}
System.out.println(Thread.currentThread().getName()+"...R");
}
}
}
public class Threa {
public static void main(String [] args) throws InterruptedException
{
Stop p=new Stop();
Thread d1=new Thread(p);
Thread d2=new Thread(p);
Thread d3=new Thread(p);
d3.setDaemon(true);//守护线程,所有线程结束后自动结束
d1.start();
d2.start();
d1.join();//join方法,当mian执行d2的join方法时会停下来,此时d1,d2交替执行直到d1执行完mian才开始执行
d3.start();
d1.setPriority(8);//设置优先级
int num=0;
while(true)
{
if(num++==60)
{
d1.interrupt();//中断当前线程的等待状态
d2.interrupt();
break;//如果没加break,此循环将一直执行,over输出将不能执行到
}
System.out.println(Thread.currentThread().getName()+"...M");
}
System.out.println("over");
}
}
(多线程)Threa
最新推荐文章于 2022-09-26 19:02:08 发布