java线程的优先级是数字越大优先级越高_java – 优先级较高的线程获得与较低优先级相同的CPU数量?...

在Java中,作者创建了两个线程A和B,并设置了线程A的优先级高于线程B,期望线程A的打印语句能更频繁出现。然而,在实际运行中,线程A和线程B的输出交替出现,没有体现出优先级的差异。作者在Ubuntu 1.7.0-79-b15环境下运行程序,并通过taskset指令限制程序只使用一个CPU核心。这表明即使设置了线程优先级,程序的行为并未如预期。问题可能是Java线程优先级在单一CPU环境下的表现,或者是对Java线程调度机制的理解有误。
摘要由CSDN通过智能技术生成

以下是我的代码.

public class Test {

public static void main(String[] args) throws InterruptedException {

PrintingThread a = new PrintingThread("A");

a.setPriority(9);

PrintingThread b = new PrintingThread("B");

b.setPriority(1);

a.start();

b.start();

}

static class PrintingThread extends Thread {

private int i = 0;

private String name;

public PrintingThread(String name) {

super();

this.name = name;

}

@Override

public void run() {

while (true) {

i++;

if (i % 100000 == 0) {

System.out.println("Thread " + name + " count=" + i

+ ". Time :" + System.currentTimeMillis());

}

}

}

}

}

由于我已经为A设置了更高的优先级,我预计print语句会为A提供更高的值,但事实并非如此.以下是运行程序一段时间后的示例输出.

Thread A count=1033300000. Time :1431937330486

Thread A count=1033400000. Time :1431937330486

Thread A count=1033500000. Time :1431937330486

Thread A count=1033600000. Time :1431937330486

Thread B count=1058600000. Time :1431937330485

Thread B count=1058700000. Time :1431937330487

我在Ubuntu上运行Java版本1.7.0-79-b15.

我使用命令运行程序

taskset 0x00000001 java -jar Untitled.jar

并且已使用系统监视器UI验证只使用了一个CPU(如果我执行命令java -jar Untitled.jar,则使用两个CPU).

这是否意味着即使我设置优先级也没有区别?或者我的程序有问题吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值