java学习初探十八之线程的调度与控制_优先级

一、线程优先级
通常我们的计算机只有个cpu,cpu在某一个时刻只能得到cup时间片,也就是使用权,才可以执行指令。在单cpu的机器上线程不是并行运行的,只有在多个cpu上线程才可以并行运行。java虚拟机要负责线程的调度,取得cpu的使用权,目前有两种调度模型:分时调度模型和抢占式调度模型,java使用抢占式调度模型。
分时调度模型:所有线程轮流使用cpu的使用权,平均分配每个线程占用cpu的时间片。
抢占式调度模型:优先让优先级高的线程使用cpu,如果线程的优先级相同,那么会随机选择一个。(改为,优先级高的线程获取的cpu时间片相对多一些。)
1.线程三个基本方法

package ThreadTest;
/*
    关于线程优先级 
    三个方法:
    1.获取当前线程对象:Thread.currentThread()
    2.给线程取名:t.getName()
    3.获取线程名称:t2.setName("t2");
 */
public class ThreadTest4 {
    public static void main(String[] args) {
        //如何获取当前线程对象
        Thread t=Thread.currentThread();//t保存的内存地址指向的线程是“主线程对象”。

        //获取线程的名字
        System.out.println(t.getName());//main

        Thread t1=new Thread(new Proccess());
        t1.start();

        //可以给线程起名
        Thread t2=new Thread(new Proccess());
        t2.setName("t2");
        t2.start();//t2
    }
}
class Proccess implements Runnable{
    public void run() {
        Thread t=Thread.currentThread();//t保存的内存地址指向的线程是“t1线程对象”
        System.out.println(t.getName());//Thread-0 Thread-1 Thread-2....
    }
}

2.线程优先级
线程优先级主要分三种:MAX_PRIORITY(最高级);MIN_PRIORITY(最低级);
NORM_PRIORITY(标准默认)

package ThreadTest;
/*
      线程优先级高的获取的cpu时间片相对多一些
    优先级:1-10
    最低:1
    最高:10
    默认:5
 */
public class ThreadTest5 {
    public static void main(String[] args) {
        System.out.println(Thread.MAX_PRIORITY);//10
        System.out.println(Thread.MIN_PRIORITY);//1
        System.out.println(Thread.NORM_PRIORITY);//5
        Thread t1=new MyProccess();
        t1.setName("t1");

        Thread t2=new MyProccess();
        t2.setName("t2");

        System.out.println("t1优先级"+t1.getPriority());
        System.out.println("t2优先级"+t2.getPriority());

        //设置优先级
        t1.setPriority(5);
        t2.setPriority(6);
        //启动
        t1.start();
        t2.start();
    }
}
class MyProccess extends Thread{
    public void run() {
        for(int i=0;i<50;i++) {
            System.out.println(Thread.currentThread().getName()+"---->"+i);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值