java线程--优先级、休眠、让步、插队实例
2017-11-03 20:00
537 查看
1.线程的优先级
java线程的优先级通常是数字越大,优先级越高数值取1~10package com.example; public class MyThreadPriority { public static void main (String [] args){ Thread maxpriority = new Thread(new Maxpriority(),"优先级较高的线程"); Thread minpriority = new Thread(new Minpriority(),"优先级较低的线程"); minpriority.setPriority(Thread.MIN_PRIORITY); //设置线程的优先级为1 maxpriority.setPriority(10); //设置线程优先级为10 //开启两个线程 maxpriority.start(); minpriority.start(); } } class Maxpriority implements Runnable{ public void run(){ for (int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"正在输出"+i); } } } class Minpriority implements Runnable{ public void run(){ for (int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"正在输出:"+i); } } }
执行结果:
优先级较高的线程正在输出0
````
优先级较高的线程正在输出9
优先级较低的线程正在输出:0
```
优先级较低的线程正在输出:9
2.线程的休眠
package com.example; public class MyThreadSleep { public static void main (String [] args) throws InterruptedException { new Thread(new SleepThread()).start(); for(int i=0;i<10;i++){ if(i==5){ Thread.sleep(5000); System.out.println("主线程正在输出:"+i); Thread.sleep(3000); } } } } class SleepThread implements Runnable{ public void run(){ for(int i=0;i<10;i++){ if(i==3){ try { Thread.sleep(3000); }catch (InterruptedException e){ e.printStackTrace(); } } System.out.println("线程1正在输出:"+i); try { Thread.sleep(2000); }catch (Exception e){ e.printStackTrace(); } } } }
3、线程让步
package com.example; public class MyYieldThread { public static void main (String [] args){ Thread t1 = new YieldThread("线程1"); Thread t2 = new YieldThread("线程2"); //开启两个线程 t1.start(); t2.start(); } } class YieldThread extends Thread{ public YieldThread (String name){ super (name); //调用父类的构造方法 } public void run(){ for(int i = 0;i<5;i++){ System.out.println(Thread.currentThread().getName()+"---"+i); if(i==3){ System.out.println("线程让步:"); Thread.yield(); //线程运行到此作出让步 } } } }
运行结果:
线程1—0
线程1—1
线程1—2
线程1—3
线程让步:
线程2—0
线程2—1
线程2—2
线程2—3
线程让步:
线程1—4
线程2—4
4、线程的插队
package com.example; public class MyEmergercyThread { public static void main (String [] args) throws InterruptedException { Thread t =new Thread(new EmergencyThread(),"线程1");//创建线程 t.start(); //开启线程 for(int i=1;i<6;i++){ System.out.println(Thread.currentThread().getName()+"输入:"+i); if(i==2){ t.join(); //调用join()方法 } Thread.sleep(500); //线程休眠500毫秒 } } } class EmergencyThread implements Runnable{ public void run(){ for (int i=1;i<6;i++){ System.out.println(Thread.currentThread().getName()+"输入:"+i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
运行结果:
main输入:1
线程1输入:1
main输入:2
线程1输入:2
线程1输入:3
线程1输入:4
线程1输入:5
main输入:3
main输入:4
main输入:5
参考文档:
Java基础入门 传智博客高教产品研发部
本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。
相关文章推荐
- Java多线程六:线程优先级和yield()让步函数
- Java 线程优先级详解及实例
- Java中线程的使用 (2)-多线程、线程优先级、线程睡眠、让步、阻塞
- zthread学习 实例四 让步、休眠、优先级
- Java - 线程让步和休眠
- 详解Java中的线程让步yield()与线程休眠sleep()方法
- 详解Java中的线程让步yield()与线程休眠sleep()方法
- java并发(2)-优先级,让步,后台线程
- Java中线程休眠编程实例
- Java_基础—设置休眠/守护/插队/礼让/优先级线程
- zthread学习 实例四 让步、休眠、优先级
- Java线程优先级
- JAVA_SE线程实现两种方式实例
- Java线程:线程的调度-让步
- Java线程: 优先级
- java例程练习(多线程[线程的优先级等等])
- Java多线程(十)——线程优先级和守护线程
- java线程休眠(sleep)
- java 注意线程下的 异常捕获,会跳过sleep(10000)休眠,可能会出现死循环
- Java线程:线程的调度-休眠