Java多线程 小知识 守护线程(后台线程)setDaemon、join方法、优先级、yield方法

来源:互联网 发布:java 0x 转换 int 编辑:程序博客网 时间:2024/06/10 00:31

守护线程就是后台线程, 当前台线程停止运行以后,后台线程就自动停止,Java虚拟机退出。

setDaemon(true); //*******必须写在线程启动之前

class StopThread implements Runnable{private boolean flag =true;public  void run(){while(flag){System.out.println(Thread.currentThread().getName()+"....run");}}public void changeFlag(){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.setDaemon(true); //*******必须写在线程启动之前t2.setDaemon(true);t1.start();t2.start();int num = 0;while(true){if(num++ == 60){//st.changeFlag();//t1.interrupt();//t2.interrupt();break;}System.out.println(Thread.currentThread().getName()+"......."+num);}System.out.println("over");}}

join:

当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。

join可以用来临时加入线程执行。

假如B被一直挂起了,那么A线程也将一直挂起


setPriority:

Thread.MAX_PRIORITY

Thread.MIN_PRIORITY

设置线程优先级线程默认优先级为5,一共是1~10。优先级高的线程执行的频率会比优先级低的线程高。


yield:

暂停当前执行的线程对象,去执行其它线程。  

效果:  以下程序   线程的交替频率提高。

/*join:当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。join可以用来临时加入线程执行。*/class Demo implements Runnable{public void run(){for(int x=0; x<70; x++){System.out.println(Thread.currentThread().toString()+"....."+x);Thread.yield();}}}class  JoinDemo{public static void main(String[] args) throws Exception{Demo d = new Demo();Thread t1 = new Thread(d);Thread t2 = new Thread(d);t1.start();//t1.setPriority(Thread.MAX_PRIORITY);t2.start();//t1.join();for(int x=0; x<80; x++){//System.out.println("main....."+x);}System.out.println("over");}}


0 0
原创粉丝点击