多线程的优先级与休眠
2015-09-26 17:00
239 查看
一)多线程的优先级
在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。优先级越高的程序获得CPU执行的机会越大,线程的优先级用1~10之间的整数来表示,优先级依次递增。除了可以使用数字表示线程的优先级,还可以使用Thread类提供的三个静态常量来表示线程的优先级(你在逗我......还不如直接用数字呢....)
Thread类的静态常量 功 能 描 述
static int MAX_PRIORITY 线程优先级为10
static int MIN_PRIORITY 线程优先级为1
static int NORM_PRIORITY 线程优先级为5
程序在运行期,处于就绪状态的每个线程都有自己的优先级,main线程具有普通的优先级(5)。
线程的优先级可以通过Thread类的setPriority(int newPriority)方法对其进行性设置,参数newPriority接收的是1~10之间的整数或者那三个静态常量
下面通过一个案例来演示不同的优先级的两个线程在程序中的运行情况
2)线程的休眠
如果希望人为的控制线程,将正在执行的线程暂停一段时间,可以使用sleep(long millis)方法进行设置,不过该方法声明抛出InterruptedException异常,因此在调用时该捕获异常(tyr catch)或者声明抛出异常(throw)
接下来就演示一下sleep(long millis)方法在程序中的应用
未完待续.......
在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。优先级越高的程序获得CPU执行的机会越大,线程的优先级用1~10之间的整数来表示,优先级依次递增。除了可以使用数字表示线程的优先级,还可以使用Thread类提供的三个静态常量来表示线程的优先级(你在逗我......还不如直接用数字呢....)
Thread类的静态常量 功 能 描 述
static int MAX_PRIORITY 线程优先级为10
static int MIN_PRIORITY 线程优先级为1
static int NORM_PRIORITY 线程优先级为5
程序在运行期,处于就绪状态的每个线程都有自己的优先级,main线程具有普通的优先级(5)。
线程的优先级可以通过Thread类的setPriority(int newPriority)方法对其进行性设置,参数newPriority接收的是1~10之间的整数或者那三个静态常量
下面通过一个案例来演示不同的优先级的两个线程在程序中的运行情况
package 线程的优先级; class MaxPriority implements Runnable{ public void run(){ for(int i = 0 ;i < 10; i++){ System.out.println(Thread.currentThread().getName()+"正在输入:"+i); } } } class MinPriority implements Runnable{ public void run(){ for(int i = 0 ;i < 10; i++){ System.out.println(Thread.currentThread().getName()+"正在输入:"+i); } } } public class 线程的优先级 { public static void main(String[] args) { Thread t1 = new Thread(new MaxPriority(),"优先级别较高的线程"); Thread t2 = new Thread(new MinPriority(),"优先级别较低的线程"); t1.setPriority(Thread.MAX_PRIORITY); //用Thread类的setPriority方法来设置优先级,将t1设置为10,t2设置为1; t2.setPriority(Thread.MIN_PRIORITY); t1.start(); t2.start(); } }
2)线程的休眠
如果希望人为的控制线程,将正在执行的线程暂停一段时间,可以使用sleep(long millis)方法进行设置,不过该方法声明抛出InterruptedException异常,因此在调用时该捕获异常(tyr catch)或者声明抛出异常(throw)
接下来就演示一下sleep(long millis)方法在程序中的应用
package 线程睡眠; public class 线程睡眠 { public static void main(String[] args)throws Exception { new Thread(new SleepThread()).start(); for(int i = 1; i < 11; i++){ if(i == 5){ Thread.sleep(2000); //睡眠2秒 } System.out.println("主线程正在输出:"+i); Thread.sleep(500); //睡眠500毫秒 } } } class SleepThread implements Runnable{ public void run(){ for(int i = 1 ; i < 11; i++){ if(i == 3){ try{ Thread.sleep(2000); //睡眠2秒 }catch(InterruptedException e){ e.printStackTrace(); } } System.out.println("线程一正在输出:"+i); try{ Thread.sleep(500); //睡眠500毫秒 }catch(Exception e){ e.printStackTrace(); } } } } /**主线程正在输出:1 线程一正在输出:1 主线程正在输出:2 线程一正在输出:2 主线程正在输出:3 线程一在等于3的时候休眠两秒,主线程因为有sleep(500),所以主线程在线程一休眠的这 主线程正在输出:4 段时间内只能输出2个数 线程一正在输出:3 线程一正在输出:4 主线程正在输出:5 线程一正在输出:5 主线程正在输出:6 线程一正在输出:6 主线程正在输出:7 线程一正在输出:7 主线程正在输出:8 线程一正在输出:8 主线程正在输出:9 线程一正在输出:9 主线程正在输出:10 线程一正在输出:10 **/
未完待续.......
相关文章推荐
- Oracle常用函数
- java web 分页查询、显示
- html5使用indexdb
- String,StringBuffer与StringBuilder的区别??
- jaxb注解
- 单点登录实现思路
- LINUX JDK Tomcat 安装
- Secure your iPhone with 6 digit passcode by upgrading to iOS9
- Tween + 缓动函数
- String,StringBuffer与StringBuilder的区别??
- 搭建Spark分布式集群
- 数组的增删改查的C语言实现
- 观察者设计模式
- 三种三栏网页宽度自适应布局方法
- gradle笔记
- C基础--双链表的构造
- Connection #Facebook Relay文档翻译#
- 基本的Web控件二
- Linux下LDAP统一认证解决方案
- 原生js 简单拖拽