多线程的join方法和Yield方法以及优先级问题
2017-01-04 12:06
337 查看
join方法
Yield方法
线程优先级路权
Yield方法
线程优先级路权
join()方法
t1.join()意味着当前运行线程要等待t1,是实例方法package sisuo; public class Test extends Thread { @Override public void run() {//主线程 ThreadDemo t=new ThreadDemo(); t.setName("线程A"); t.start(); JoinThread j= new JoinThread(); j.setName("加入的线程"); j.start(); t.b=false; try { j.join();//等待前边所有线程结束,然后执行后边的线程,约束主线程 } catch (InterruptedException e) { System.out.println("等待线程结束时异常"); } System.out.println("主线程开启"); for (int i = 1; i < 101; i++) { System.out.println(Thread.currentThread().getName()+"主线程执行了"+i+"次"); } System.out.println("主线程执行结束!"); } public static void main(String[] args) { new Test().start();//开启主线程 } } package sisuo; public class JoinThread extends Thread { @Override public void run() { 4000 System.out.println("加入的线程开始执行"); for (int i = 1; i <11; i++) { System.out.println(Thread.currentThread().getName()+"加入的线程执行了"+i+"次"); } System.out.println(Thread.currentThread().getName()+"执行结束"); } } package sisuo; public class ThreadDemo extends Thread { public boolean b=true; @Override public void run() { while(b){ for (int i = 1; i < 6; i++) { System.out.println(Thread.currentThread().getName()+"执行了"+i+"次"); } } System.out.println(Thread.currentThread().getName()+"执行结束"); } }
Yield方法
类方法,一个线程把CPU让出来,让给谁并不明确,Thread.yield();for (int i = 0; i < 10000; i++) { System.out.println("按回车键干扰"); s.nextLine(); t1.interrupt(); if(i==50){ Thread.yield(); } try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
线程优先级(路权)
优先级高的线程往往会得到CPU的优先加载,会先执行,Java线程Thread的优先级共有10级,最低为1,最高为10,包括main线程在内默认优先级都是5public static void main(String[] args) { // 主线程的优先级 System.out.println(Thread.currentThread().getPriority()); System.out.println("最高优先级:"+Thread.MAX_PRIORITY); System.out.println("最低优先级:"+Thread.MIN_PRIORITY); System.out.println("默认优先级:"+Thread.NORM_PRIORITY); MyThread mt1 = new MyThread(); Thread t1 = new Thread(mt1); t1.setName("追龙"); MyThread mt2 = new MyThread(); Thread t2 = new Thread(mt2); t2.setName("奇门遁甲"); MyThread mt3 = new MyThread(); Thread t3 = new Thread(mt3); t3.setName("机器之血"); // 设置优先级 t1.setPriority(8); t2.setPriority(2); t1.start(); t2.start(); t3.start(); System.out.println(t1.getPriority()); System.out.println(t2.getPriority()); System.out.println(t3.getPriority());
相关文章推荐
- 黑马程序员:Java基础——多线程的停止与守护以及Join,优先级和yield方法
- ——多线程的优先级,setDaemon方法,yield方法及join方法简述
- 多线程基础四(三)、yield方法、线程优先级以及守护线程
- 多线程协作方法sleep、yield、wait、join和同步和安全等问题
- 黑马程序员------多线程(No.3)(停止线程、守护线程、Join方法、优先级&yield方法、总结)
- Java多线程知识点总结——进阶篇(十二) 之 Join方法 & 优先级 & yield方法
- Java多线程 小知识 守护线程(后台线程)setDaemon、join方法、优先级、yield方法
- 多线程程序退出内存句柄泄漏的问题以及解决方法
- Yii的CDbCriteria查询(以及使用$criteria->join出现问题的解决方法)
- Java多线程:(三)一些方法:start(),sleep(),yield(),join()
- 多线程中join方法的使用方法以及其特点
- 多线程---优先级&yield方法
- 基于消息分发的多线程程序设计,常见的问题,以及解决方法
- java 多线程(2) 线程的调度和优先级 / sleep() / interrupt() 打断join() / yield() / setPriority()
- java 多线程 sleep() wait() yield() join()方法解析
- Java基础 多线程 解决安全问题 等待唤醒机制 Lock Condition interrupt join setPriority yield
- Java多线程-(5)线程的优先级、sleep()、yield()、join()
- java多线程程序设计二、线程返回值,优先级以及暂停的问题
- CSS优先级问题以及jQuery中的.eq()遍历方法和:eq()选择器的差别
- 多线程——问题引出以及解决方法