java学习初探十八之线程的调度与控制_sleep
来源:互联网 发布:Linux xmonad 编辑:程序博客网 时间:2024/06/07 02:30
1.sleep基本用法
package ThreadTest;/* 1.Thread.sleep(毫秒) 2.sleep方法是一个静态方法 3.该方法作用是阻塞当前线程,腾出cpu,让给其他线程 */public class ThreadTest6 { public static void main(String[] args) { Thread t1=new MyThread(); t1.setName("t1"); t1.start(); }}class MyThread extends Thread{ //Thread方法中run不抛出异常,所以重写run方法之后,在run方法的声明位置不能使用throws //所以run方法中的异常只能try catch public void run() { try { for(int i=0;i<10;i++) { System.out.println(Thread.currentThread().getName()+"---->"+i); Thread.sleep(1000);//当前线程阻塞1秒 } } catch (InterruptedException e) { e.printStackTrace(); } }}
2.关于sleep的一个面试题,主要考察静态方法的调用
package ThreadTest;/* 面试题 */public class ThreadTest7 { public static void main(String[] args) throws InterruptedException { Thread t=new process(); t.setName("t"); t.start(); //休眠 //Thread.sleep(5000); t.sleep(5000);//实际阻塞的是主线程。等价于Thread.sleep(5000)。 System.out.println("HelloMyworld");//5秒后输出 }}class process extends Thread{ public void run() { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName()+"--->"+i); } }}
3.interrupt打断休眠
package ThreadTest;/* 某线程正在休眠,如何打断它的休眠 t.interrupt,依靠的是异常处理机制 */public class ThreadTest8 { public static void main(String[] args) throws InterruptedException { //需求:启动线程后,5秒后打断线程的休眠 Thread t=new Thread(new proccessortest()); t.setName("t"); t.start(); //5s之后 Thread.sleep(5000); //打断t的休眠 t.interrupt(); }}class proccessortest implements Runnable{ public void run() { try { Thread.sleep(100000000);//interrupt后,发生异常 } catch (InterruptedException e) { //e.printStackTrace(); } for(int i=0;i<10;i++) { System.out.println(Thread.currentThread().getName()+"--->"+i); } }}
4.线程的终止
package ThreadTest;/* 如何正确的更好的终止一个正在执行的线程。 需求:线程启动5s后终止 */public class ThreadTest9 { public static void main(String[] args) throws InterruptedException { ProccessTest p= new ProccessTest(); Thread t=new Thread(p); t.setName("t"); t.start(); //5s Thread.sleep(5000); //终止 p.run=false; }}class ProccessTest implements Runnable{ boolean run=true; public void run() { for(int i=0;i<10;i++) { if(run) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"--->"+i); }else { return; } } }}
阅读全文
0 0
- java学习初探十八之线程的调度与控制_sleep
- java学习初探十八之线程的调度与控制_优先级
- java学习初探十八之线程的调度与控制_让位yield_合并jion
- java学习初探十八之线程和进程的区别
- java学习初探十八之线程的创建和启动
- java学习初探十八之线程的生命周期
- java学习初探十八之线程的线程同步_锁机制_synchronized
- 线程的调度与控制
- Java线程学习之线程初探
- Java学习笔记之线程的控制
- 线程的调度与控制 线程的生命周期
- Java之多线程加强(多线程调度与控制)
- Java多线程的调度与控制
- java多线程之线程的调度
- Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管理与调度(十八)
- java 之线程的控制
- (45)Java学习笔记——多线程 / 设置线程 / 线程调度 /线程控制
- JAVA 学习十八: 线程的四种状态
- linux基础命令
- Linux 安装 rz和sz
- 关于类的内存问题
- 写在Service之前(在程中更新ui)
- Packets(POJ 1017, 贪心)
- java学习初探十八之线程的调度与控制_sleep
- lua的栈
- Linux Workqueue——魅族内核大神文章
- jsf为‘null Converter’设置值“......“时发生转换错误的一种可能原因
- 06-jQuery基础
- 例题3-5生成元
- Ubuntu16安装Mysql和mysql-devel包
- LALLA
- VC_MFC水波纹控件,开源