这是一段代码段。
class Thread1 extends Thread
{
Thread1(String s)
{
super(s);
}
public void run()
{
for(int i=0;i<5;i++)
System.out.println(getName());
}
}
我为三个线程创建了三个不同的类。
class Thread2 extends Thread
{
Thread2(String s)
{
super(s);
}
public void run()
{
for(int i=0;i<10;i++)
System.out.println(getName());
}
}
class Thread3 extends Thread
{
Thread3(String s)
{
super(s);
}
public void run()
{
for(int i=0;i<12;i++)
System.out.println(getName());
}
}
只是尝试按照我设置的优先级打印线程的名称。
class RunThread extends Thread
{
public static void main(String... s)
{
Thread1 t1= new Thread1("T1");
Thread2 t2= new Thread2("T2");
Thread3 t3= new Thread3("T3");
但是这些线程以相同的随机方式打印..当没有设置优先级时打印它们。
t1.setPriority(Thread.NORM_PRIORITY);
t2.setPriority(Thread.MIN_PRIORITY);
t3.setPriority(Thread.MAX_PRIORITY);
}
}
答案 0 :(得分:1)
线程优先级不符合您的想法
注意:Java使用本机线程(几乎在每个现代JVM中),这意味着它不是用于执行调度的操作系统。
答案 1 :(得分:1)
Peter Lawrey说,&#34;它是操作系统的提示 ...&#34;我只是想谈谈什么&#34;提示&#34;装置
大多数台式机/笔记本电脑/服务器/移动设备操作系统不允许用户模式代码直接控制调度程序优先级。这些操作系统都假设多个独立的应用程序彼此竞争以使用可用的CPU,并且它们的调度算法不断调整每个线程的真正优先级,以便为每个线程提供所需的线程, &#34;公平分享&#34;可用的处理能力。
通常有一个参数,用户模式代码可以调整,以缩放线程的共享大小。 (在Unix中,它被称为线程&#34;很好&#34;值。)这通常是Java可以转向的唯一旋钮。
某些操作系统具有实时功能,适用于框上的所有线程彼此协作而不是竞争资源时使用的功能。这些功能通常包括选择不同的调度策略,通常包括至少一个允许用户模式代码直接控制真正的调度优先级。
Java的实时版本可以利用这些功能。