JAVA多线程编程——1.9线程让步-1.11守护线程
来源:互联网 发布:tensorflow教程 pdf 编辑:程序博客网 时间:2024/05/16 14:15
1.9线程让步(yield方法)
yield()方法的作用是当前线程放弃CPU资源,然后重新选择运行哪个线程。
public class Thread_191 { static class MyThread extends Thread{ public void run(){ long beginTime = System.currentTimeMillis(); int count =0; for(int i=0;i<5000000;i++){ //Thread.yield(); count+=i+1; } long endTime = System.currentTimeMillis(); System.out.println("用了: "+(endTime-beginTime)+"毫秒! "); }}public static void main(String[] args) { MyThread myThread= new MyThread(); myThread.start();}
}
1.10线程优先级
1.线程优先级是可以继承的。
/** * Created by Senliang-Ying on 2017/11/28. */public class Thread_1101 { static class MyThread1 extends Thread{ public void run(){ System.out.println("MyThread1 run priority =" + this.getPriority()); MyThread2 myThread2 = new MyThread2(); myThread2.start(); }}static class MyThread2 extends Thread{ public void run(){ System.out.println("MyThread2 run priority =" + this.getPriority()); }}public static void main(String[] args) { System.out.println("main thread begin priority = "+ Thread.currentThread().getPriority()); Thread.currentThread().setPriority(6); System.out.println("main end priority= "+Thread.currentThread().getPriority()); MyThread1 myThread1 = new MyThread1(); myThread1.start();}}
2.设置优先级(setPriority)
import java.util.Random;public class Thread_1102 {static class MyThread1 extends Thread { public void run() {// System.out.println("MyThread1 run priority =" + this.getPriority()); long beginTime = System.currentTimeMillis(); long addResult = 0; for (int j = 0; j < 10; j++) { for (int i = 0; i < 50000; i++) { Random random = new Random(); random.nextInt(); addResult = addResult + i; } } long endTime = System.currentTimeMillis(); System.out.println("⭐️ ⭐️ ⭐️ ⭐️ thread 1 use time= " + (endTime - beginTime)); }}static class MyThread2 extends Thread { public void run() { long beginTime = System.currentTimeMillis(); long addResult = 0; for (int j = 0; j < 10; j++) { for (int i = 0; i < 50000; i++) { Random random = new Random(); random.nextInt(); addResult = addResult + i; } } long endTime = System.currentTimeMillis(); System.out.println("⭐️ ⭐️ ⭐️ ⭐️ thread 2 use time= " + (endTime - beginTime)); }}public static void main(String[] args) { for (int i = 0; i < 5; i++) {MyThread1 thread1= new MyThread1();thread1.setPriority(10);thread1.start();MyThread2 thread2 = new MyThread2();thread2.setPriority(4);thread2.start(); }}}
多次运行后,可以发现优先级高的线程大多数情况下优先执行。
1.11守护线程
JAVA中有两种线程,一种是用户线程,一种是守护线程(Daemon),守护线程就是一种陪伴用户线程的线程,只有当一个用户线程都没有的情况下,守护线程才会停止,垃圾回收机制就是一个典型的守护线程。可以用setDeamon()方法对线程对象进行设置。代码如下
/** * Created by Senliang-Ying on 2017/12/4. * 守护线程 */public class Thread_1103 {static class MyThread extends Thread { private int i = 0; @Override public void run() { try { while (true) { i++; System.out.println("i= " + i); Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } }}public static void main(String[] args) { try{ MyThread thread = new MyThread(); thread.setDaemon(true);//设置为守护线程 thread.start(); Thread.sleep(5000); System.out.println("我离开thread对象也不再打印了,也就是停止了"); }catch(InterruptedException e){ e.printStackTrace(); }}
}
输出如下:
i= 1
i= 2
i= 3
i= 4
i= 5
我离开thread对象也不再打印了,也就是停止了
阅读全文
0 0
- JAVA多线程编程——1.9线程让步-1.11守护线程
- java多线程--线程让步
- java并发编程:线程让步
- Java多线程初探——守护线程
- Java多线程——守护线程
- Java多线程编程1----基础知识--守护线程
- Java线程和多线程(六)——守护线程
- java多线程-守护线程
- java多线程-守护线程
- Java 多线程 - 守护线程
- Java 多线程守护线程
- Java多线程-线程的调度(让步)
- java多线程:线程的调度-让步
- Java多线程 -- 线程的调度-让步
- Java多线程基础--06之 线程让步
- java 线程让步(yield)
- 多线程学习(六)线程的调度-让步&合并&守护线程
- java多线程之守护线程
- python描述单向循环链表
- hdu 5444Elven Postman(建树,遍历)
- 51Nod
- Matlab图像的几何变换之图像平移
- Mybatis DAO层参数传递
- JAVA多线程编程——1.9线程让步-1.11守护线程
- HOJ 3188
- LaTeX大括号公式和一般括号总结
- WireShark查看指定的PC应用的网络包
- Android SO文件的兼容和适配
- 算法之老鼠走迷宫1-找一条路
- 3
- 利用poi读取excel
- RN常用UI组件技术选型