我从这里中做样例代码。我得到了结果:
Thread[Thread-3,1,main]: 5
Thread[Thread-0,10,main]: 5
Thread[Thread-2,1,main]: 5
Thread[Thread-1,1,main]: 5
Thread[Thread-4,1,main]: 5
Thread[Thread-0,10,main]: 4
Thread[Thread-3,1,main]: 4
Thread[Thread-2,1,main]: 4
Thread[Thread-0,10,main]: 3
Thread[Thread-5,1,main]: 5
Thread[Thread-3,1,main]: 3
Thread[Thread-2,1,main]: 3
Thread[Thread-1,1,main]: 4
Thread[Thread-5,1,main]: 4
Thread[Thread-3,1,main]: 2
Thread[Thread-2,1,main]: 2
Thread[Thread-5,1,main]: 3
Thread[Thread-3,1,main]: 1
Thread[Thread-4,1,main]: 4
Thread[Thread-0,10,main]: 2
Thread[Thread-2,1,main]: 1
Thread[Thread-5,1,main]: 2
Thread[Thread-4,1,main]: 3
Thread[Thread-5,1,main]: 1
Thread[Thread-1,1,main]: 3
Thread[Thread-0,10,main]: 1
Thread[Thread-4,1,main]: 2
Thread[Thread-1,1,main]: 2
Thread[Thread-4,1,main]: 1
Thread[Thread-1,1,main]: 1
setPriority
似乎不能正常工作。为什么?
如何修改示例代码以查看属性的效果。
发布于 2014-10-27 10:59:22
你找到的例子坏了。
以下是一些涉及线程优先级的选定Oracle引用:
除了这类材料,以及关于Java优先级如何映射到本地线程优先级的材料之外,Oracle文档对于Java的线程优先级以及它们的含义几乎保持沉默。当然,我们并没有试图精确地说明这种行为。
Java (实时)是一个不同的问题,但这不再是Oracle支持的产品线。(AFAIK)。
发布于 2014-10-27 09:26:13
我猜你有一个多核CPU。
线程优先级只影响线程调度,即帮助系统决定下一个线程在多个线程等待执行的情况下运行哪些线程。
但在您的情况下,每个线程被分配到不同的核心。没有等待线程,也不需要调度。所有六个线程实际上都是并行运行的,线程优先级没有任何影响。
如果要查看线程优先级的效果,请稍微更改主方法,以创建足够多的高优先级线程,以占用所有CPU核心。然后,调度启动,线程优先级起作用:
public static void main(String[] args) {
for (int i = 0; i < 5; i++)
new SimplePriorities(Thread.MIN_PRIORITY);
// create enough high priority threads to occupy all CPU cores:
for (int i = 0; i < Runtime.getRuntime().availableProcessors(); i++)
new SimplePriorities(Thread.MAX_PRIORITY);
}
https://stackoverflow.com/questions/26581057
复制相似问题