Java_基础—设置休眠/守护/插队/礼让/优先级线程
来源:互联网 发布:面包板入门单片机 编辑:程序博客网 时间:2024/06/10 00:30
一、休眠线程(Sleep)
Thread.sleep(毫秒), 控制当前线程休眠若干毫秒
1秒= 1000毫秒
1秒 = 1000 * 1000 * 1000纳秒 1000000000
package com.soar.threadmethod;public class Demo3_Sleep { public static void main(String[] args) { //demo1(); new Thread(){ public void run(){ for(int i = 0; i<10; i++){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName()+" aaaaa"); } } }.start(); new Thread(){ public void run(){ for(int i = 0; i<10; i++){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName()+" bb"); } } }.start(); } public static void demo1() throws InterruptedException { for (int i = 20; i >=0; i--) { Thread.sleep(1000); System.out.println("倒计时第:"+i+"秒"); } }}
二、守护线程(setDaemon)
setDaemon(), 设置一个线程为守护线程, 该线程不会单独执行, 当其他非守护线程都执行结束后, 自动退出
package com.soar.threadmethod;public class Demo4_Daemon { /* * 守护线程 */ public static void main(String[] args) { Thread t1= new Thread(){ public void run(){ for(int i=0; i<2; i++){ System.out.println(getName()+" aaaaaa"); } } }; Thread t2= new Thread(){ public void run(){ for(int i=0; i<50; i++){ System.out.println(getName()+" bb"); } } }; t2.setDaemon(true); //但传入true就是意味着设置为守护线程 t1.start(); t2.start(); }}
Console:
Thread-0 aaaaaaThread-0 aaaaaaThread-1 bbThread-1 bbThread-1 bb
当t1执行完结束后,t2不会立马退出,有一段缓冲的时间。
三、加入(插队)线程(join)
join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续
join(int), 可以等待指定的毫秒之后继续
package com.soar.threadmethod;public class Demo5_Join { /* * join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续 * join(int), 可以等待指定的毫秒之后继续 * 插队 */ public static void main(String[] args) { final Thread t1 = new Thread(){ public void run(){ for(int i=0; i<10; i++){ System.out.println(getName()+" aaaaaaa"); } } }; Thread t2 = new Thread(){ public void run(){ for(int i=0; i<10; i++){ if(i==2){ try { //t1.join(); t1.join(1); //传入的参数代表的是插队的时间,过了指定的时间后,两条线程交替执行 } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(getName()+" bb"); } } }; t1.start(); t2.start(); }}
Console:
Thread-1 bbThread-0 aaaaaaaThread-1 bbThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-0 aaaaaaaThread-1 bbThread-1 bbThread-1 bbThread-1 bbThread-1 bbThread-1 bbThread-1 bbThread-1 bb
四、礼让线程(yield)(了解)
yield让出cpu
package com.soar.threadmethod;public class Demo6_Yield { /* * 礼让线程 * yield让出cpu */ public static void main(String[] args) { new MyThread().start(); new MyThread().start(); }}class MyThread extends Thread{ public void run(){ for(int i=1; i<1000; i++){ if(i%10 == 0){ Thread.yield(); //让出CPU } System.out.println(getName()+"。。。"+i); } }}
五、设置优先级线程(setPriority)(了解)
setPriority()设置线程的优先级
package com.soar.threadmethod;public class Demo7_Priority { /* * setPriority()设置线程的优先级 */ public static void main(String[] args) { Thread t1 = new Thread(){ public void run(){ for(int i=0; i<100; i++){ System.out.println(getName()+" aaaaa"); } } }; Thread t2 = new Thread(){ public void run(){ for(int i=0; i<100; i++){ System.out.println(getName()+" aaaaa"); } } }; t1.setPriority(Thread.MIN_PRIORITY); //设置最小的线程优先级 t2.setPriority(Thread.MAX_PRIORITY); //设置最大的线程优先级 t1.start(); t2.start(); }}
阅读全文
0 0
- Java_基础—设置休眠/守护/插队/礼让/优先级线程
- java线程--优先级、休眠、让步、插队实例
- 线程加入,休眠,中断,礼让操作
- 线程的优先级设定与礼让
- 线程的调度(线程休眠,线程让步,线程插队)
- Java多线程基础--10之 线程优先级和守护线程
- Java基础——线程间的通信+生产者消费者程序+守护线程+Join方法+线程优先级
- 线程插队
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
- java基础:线程方法之设置优先级
- Java_基础—多线程(线程安全问题)
- java_基础_线程
- 线程分组 | 守护线程 | 线程优先级
- 线程的礼让
- java线程礼让
- Java_基础 设置字体
- 马士兵-多线程学习第03课 线程的合并,礼让和优先级
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- 安卓学习-(滚动布局:RecyclerView)
- 安卓学习- 编写界面(页面布局详解)
- Linux 下git安装
- github搭建自己的博客网站
- NYOJ 259 茵茵的第一课
- Java_基础—设置休眠/守护/插队/礼让/优先级线程
- SpringBoot之开启数据库迁移的FlyWay使用
- 排序算法-希尔排序
- sql 表之间的数据复制
- 微信小程序--后端管理平台业务3--thymeleaf带请求参数
- Hdu 6188 Duizi and Shunzi【思维+Dp】
- html,css
- 安卓学习-(数据存储(文件和SharedPreferences))
- 博弈论的纳什平衡的两个例题