3、线程的休眠
来源:互联网 发布:cpc广告发布网站源码 编辑:程序博客网 时间:2024/06/06 15:43
在当前线程的执行中,暂停指定的毫秒数,释放cpu的时间片
假设cpu按照一定顺序执行每个进程,为每个进程分配时间。
当cpu分配给进程1三秒钟的时间,AB线程则竞争者3秒钟的时间
如果A线程3秒内执行完了就ok了。如果没执行完,执行到一半。则需要等待下次cpu为进程1分配时间。则AB两线程再次竞争时间。
但是,当两个线程都存在休眠的情况下,假设cpu分配3秒钟的时间,A执行完1秒后休眠,则释放时间片让给B执行,B执行一秒后休眠,让给A执行。当下次CPU分配时间后,两个线程再次竞争,然后轮流执行和休眠
休眠虽然会让程序执行变慢,但是可以使进程中的多个线程都抢到执行时间。如果没有休眠我们是无法控制哪个线程先执行,执行多少时间。
在哪个方法里调用sleep,表示哪个线程进入休眠
package com.chocus.demo1;public class ThreadDemo01 { public static void main(String[] args) { // 虽然mt和t都调用了start方法,但是谁先执行时不一定的,和代码顺序无关,具有随机性 MyThread mt = new MyThread(); mt.start(); MyRunnable mr = new MyRunnable(); Thread t = new Thread(mr); t.start(); }}/** * 第一种实现线程的方式:继承Thread类 * * @author Chocus * */class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + "-" + i); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }}/** * 第二种实现线程的方式:实现Runnable接口 * * @author Chocus * */class MyRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + "-" + i); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }}
结果
Thread-0-0Thread-1-0Thread-1-1Thread-0-1Thread-0-2Thread-1-2Thread-0-3Thread-1-3Thread-0-4Thread-1-4Thread-1-5Thread-0-5Thread-1-6Thread-0-6。。。。。。
阅读全文
1 0
- 3、线程的休眠
- 线程的调度-休眠
- 线程的休眠
- 线程的 休眠
- 线程的休眠
- 线程的调度-休眠
- 线程的调度-休眠
- 线程的休眠
- 线程的休眠
- Java线程的休眠
- 线程的休眠
- 线程的休眠
- 简单的休眠线程
- 线程的休眠
- Java中线程的休眠
- Java多线程 -- 线程的休眠
- 线程的启动与休眠
- java 吵醒休眠的线程
- java ftp上传文件中,如何判断文件是否被打开
- Banner的简单实用
- 中介者模式(mediator)c++版本
- webservice传值报错潜在危险的 Request.Form 值。
- android 获取Imei
- 3、线程的休眠
- 内联函数和宏定义的区别
- C++ GMP库实现任意位数的Montgomery Modular Multiplication
- Java线程中断
- TimesTen 应用层数据库缓存学习:20. TimesTen异常时的缓存清理
- Java并发编程:ConcurrenthashMap原理分析(1.7)
- 定时任务接口ScheduledExecutorService
- 【JavaScript 学习--09】--理解Js 中的apply 和 call方法
- python训练模型上线问题总结