javaSE-多线程停止

来源:互联网 发布:寰神结剧情知乎 编辑:程序博客网 时间:2024/05/25 20:00

停止线程

定义循环结束标记
因为线程运行代码一般都是循环,只要控制了循环即可。
使用interrupt(中断)方法。从冻结状态恢复到运行状态  不要根据单词词义想
该方法是结束线程的冻结状态,使线程回到运行状态中来。
注:stop方法已经过时不再使用。
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 setFlag(){flag = false;}}class StopThreadDemo {public static void main(String[] args) {StopThread st = new StopThread();Thread t1 = new Thread(st);Thread t2 = new Thread(st);t1.start();t2.setDaemon(true);//将t2标记成守护线程(后台线程)t2.start();int num = 0;while(true){if(num++ == 50){//st.setFlag();//当条件满足时,将线程任务中的标记改为false。让线程停止。//对t1进行一次中断,意思是将t1的冻结状态清除。让其恢复执行资格。t1.interrupt();//t2.interrupt();break;}System.out.println(Thread.currentThread().getName()+"....."+num);}System.out.println("over");}}


线程类的其他方法

setPriority(int num)设置线程的优先级
setDaemon(boolean b)(用户线程/守护线程)其他类线程结束守护线程自动结束
join()
自定义线程名称
toString()

class Demo implements Runnable{private String name;Demo(String name){this.name = name;}public void run(){for(int x=0; x<40; x++){System.out.println(Thread.currentThread().getName()+"...."+x+"...."+name);Thread.yield();}}}class ThreadDemo_Join {public static void main(String[] args) throws Exception{Demo d1  = new Demo("小强");Demo d2  = new Demo("旺财");Thread t1 = new Thread(d1);Thread t2 = new Thread(d2);t1.start();//调用了t1.join();方法。t2.start();t1.join();//主线程等待t1线程终止。/*for(int x=0; x<20; x++){System.out.println("main......"+x);}*/}}


0 0
原创粉丝点击