线程调度和优先级获取和设置

本文介绍了线程的两种调度模型:分时调度和抢占式调度。分时调度模型将时间片平均分配给所有线程,而抢占式调度模型允许线程抢占时间片,可以通过设置优先级(1-10)来影响调度,优先级高的线程有更大概率获得执行机会,但并非完全独占。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程两种调度模型:

(首先应该了解,计算机在运行进程时,是通过将时间划分成为一个一个小的片段,线程通过对时间片段的使用来实现自己的功能。)

分时调度模型:

所有的线程轮流使用CPU的使用权,也就是将时间片平均分配给每个线程。

抢占式调度模型:

显沉闷通过对时间片的抢占来实现自己的功能,在这个过程中可以对优先级进行设置(1-10),如果没有设置优先级的线程默认优先级为5.优先级比较高的线程有更高的可能性抢占到时间片。但是这个过程还是存在随机性,优先级高的线程只是得到时间片的概率大,并不是就完全独占。

常用方法:

		public final int getPriority() //获取线程的优先级
		public final void setPriority(int newPriority)//设置线程的优先级

例如,当我们要设置线程的优先级,可以参考下面的内容。

public class MyThread extends Thread {
	@Override
	public void run() {

		super.run();
		System.out.println(getName() + "线程运行");
	}

}
import org.omg.CORBA.PUBLIC_MEMBER;

public class Test {
	public static void main(String[] args) {
		MyThread m1 = new MyThread();
		MyThread m2 = new MyThread();
		MyThread m3 = new MyThread();
		// 给线程设置名称
		m1.setName("a");
		m2.setName("b");
		m3.setName("c");
		// 先获取一下优先级观察默认的优先级是多少
		System.out.println(m1.getPriority());// 结果显示5
		m1.setPriority(10);
		m1.start();
		m2.start();
		m3.start();
		System.out.println(m1.getPriority());

	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值