我还没提交过,还不知道怎么做,呵呵,以后再说。//SimplePriorities.javapublic class SimplePriorities extends Thread
{
private int countDown = 30;
private volatile double d = 0;//No optimization
public SimplePriorities(int priority)
{
setPriority(priority);
start();
}
public String toString()
{
return super.toString() +": "+countDown;
}
//run method.
public void run()
{
while(true)
{
//An expensive, interruptable operation:
for(int i=1;i<10000000;i++)
{
d = d + (Math.PI + Math.E)/(double)i;
}
System.out.println(this);
if(--countDown == 0 ) return;
}
}//End run method.
public static void main(String[] args)
{
new SimplePriorities(Thread.MAX_PRIORITY);
new SimplePriorities(Thread.MIN_PRIORITY);
new SimplePriorities(Thread.NORM_PRIORITY);
new SimplePriorities(Thread.NORM_PRIORITY);
}
}
运行结果:
Thread[Thread-0,10,main]: 30
Thread[Thread-0,10,main]: 29
Thread[Thread-0,10,main]: 28
Thread[Thread-0,10,main]: 27
Thread[Thread-0,10,main]: 26
Thread[Thread-0,10,main]: 25
Thread[Thread-0,10,main]: 24
Thread[Thread-0,10,main]: 23
Thread[Thread-0,10,main]: 22
Thread[Thread-0,10,main]: 21
Thread[Thread-0,10,main]: 20
Thread[Thread-0,10,main]: 19
Thread[Thread-0,10,main]: 18
Thread[Thread-0,10,main]: 17
Thread[Thread-0,10,main]: 16
Thread[Thread-0,10,main]: 15
Thread[Thread-0,10,main]: 14
Thread[Thread-0,10,main]: 13
Thread[Thread-0,10,main]: 12
Thread[Thread-0,10,main]: 11
Thread[Thread-0,10,main]: 10
Thread[Thread-0,10,main]: 9
Thread[Thread-0,10,main]: 8
Thread[Thread-0,10,main]: 7
Thread[Thread-0,10,main]: 6
Thread[Thread-0,10,main]: 5
Thread[Thread-0,10,main]: 4
Thread[Thread-0,10,main]: 3
Thread[Thread-0,10,main]: 2
Thread[Thread-0,10,main]: 1
Thread[Thread-2,5,main]: 30
Thread[Thread-3,5,main]: 30
Thread[Thread-2,5,main]: 29
Thread[Thread-3,5,main]: 29
Thread[Thread-2,5,main]: 28
Thread[Thread-3,5,main]: 28
Thread[Thread-2,5,main]: 27
Thread[Thread-3,5,main]: 27
Thread[Thread-2,5,main]: 26
Thread[Thread-3,5,main]: 26
Thread[Thread-2,5,main]: 25
Thread[Thread-3,5,main]: 25
Thread[Thread-2,5,main]: 24
Thread[Thread-3,5,main]: 24
Thread[Thread-2,5,main]: 23
Thread[Thread-3,5,main]: 23
Thread[Thread-3,5,main]: 22
Thread[Thread-2,5,main]: 22
Thread[Thread-2,5,main]: 21
Thread[Thread-3,5,main]: 21
Thread[Thread-3,5,main]: 20
Thread[Thread-2,5,main]: 20
Thread[Thread-2,5,main]: 19
Thread[Thread-3,5,main]: 19
Thread[Thread-3,5,main]: 18
Thread[Thread-2,5,main]: 18
Thread[Thread-2,5,main]: 17
Thread[Thread-3,5,main]: 17
Thread[Thread-3,5,main]: 16
Thread[Thread-2,5,main]: 16
Thread[Thread-2,5,main]: 15
Thread[Thread-3,5,main]: 15
Thread[Thread-2,5,main]: 14
Thread[Thread-3,5,main]: 14
Thread[Thread-3,5,main]: 13
Thread[Thread-2,5,main]: 13
Thread[Thread-2,5,main]: 12
Thread[Thread-3,5,main]: 12
Thread[Thread-1,1,main]: 30 //为什么在这边插进去一个低级线程?
Thread[Thread-3,5,main]: 11
Thread[Thread-2,5,main]: 11
Thread[Thread-2,5,main]: 10
Thread[Thread-3,5,main]: 10
Thread[Thread-3,5,main]: 9
Thread[Thread-2,5,main]: 9
Thread[Thread-2,5,main]: 8
Thread[Thread-3,5,main]: 8
Thread[Thread-3,5,main]: 7
Thread[Thread-2,5,main]: 7
Thread[Thread-2,5,main]: 6
Thread[Thread-3,5,main]: 6
Thread[Thread-3,5,main]: 5
Thread[Thread-2,5,main]: 5
Thread[Thread-3,5,main]: 4
Thread[Thread-2,5,main]: 4
Thread[Thread-3,5,main]: 3
Thread[Thread-2,5,main]: 3
Thread[Thread-3,5,main]: 2
Thread[Thread-2,5,main]: 2
Thread[Thread-3,5,main]: 1
Thread[Thread-2,5,main]: 1
Thread[Thread-1,1,main]: 29
Thread[Thread-1,1,main]: 28
Thread[Thread-1,1,main]: 27
Thread[Thread-1,1,main]: 26
Thread[Thread-1,1,main]: 25
Thread[Thread-1,1,main]: 24
Thread[Thread-1,1,main]: 23
Thread[Thread-1,1,main]: 22
Thread[Thread-1,1,main]: 21
Thread[Thread-1,1,main]: 20
Thread[Thread-1,1,main]: 19
Thread[Thread-1,1,main]: 18
Thread[Thread-1,1,main]: 17
Thread[Thread-1,1,main]: 16
Thread[Thread-1,1,main]: 15
Thread[Thread-1,1,main]: 14
Thread[Thread-1,1,main]: 13
Thread[Thread-1,1,main]: 12
Thread[Thread-1,1,main]: 11
Thread[Thread-1,1,main]: 10
Thread[Thread-1,1,main]: 9
Thread[Thread-1,1,main]: 8
Thread[Thread-1,1,main]: 7
Thread[Thread-1,1,main]: 6
Thread[Thread-1,1,main]: 5
Thread[Thread-1,1,main]: 4
Thread[Thread-1,1,main]: 3
Thread[Thread-1,1,main]: 2
Thread[Thread-1,1,main]: 1我的个人想法:
是不是这个是属于main的线程,此时他的优先级是5,要是真的如此,那又为什么会在这么后面才出来呢?(显示结果)。
还是另有原因?虚拟机的问题?........
各位大侠都说说自己的看法,个人感觉这个问题还是比较有深度的,不知道还有没有人发现类似的问题。准备把这个作为我第一个提交FAQ的问题,大家支持一下,呵呵。
{
private int countDown = 30;
private volatile double d = 0;//No optimization
public SimplePriorities(int priority)
{
setPriority(priority);
start();
}
public String toString()
{
return super.toString() +": "+countDown;
}
//run method.
public void run()
{
while(true)
{
//An expensive, interruptable operation:
for(int i=1;i<10000000;i++)
{
d = d + (Math.PI + Math.E)/(double)i;
}
System.out.println(this);
if(--countDown == 0 ) return;
}
}//End run method.
public static void main(String[] args)
{
new SimplePriorities(Thread.MAX_PRIORITY);
new SimplePriorities(Thread.MIN_PRIORITY);
new SimplePriorities(Thread.NORM_PRIORITY);
new SimplePriorities(Thread.NORM_PRIORITY);
}
}
运行结果:
Thread[Thread-0,10,main]: 30
Thread[Thread-0,10,main]: 29
Thread[Thread-0,10,main]: 28
Thread[Thread-0,10,main]: 27
Thread[Thread-0,10,main]: 26
Thread[Thread-0,10,main]: 25
Thread[Thread-0,10,main]: 24
Thread[Thread-0,10,main]: 23
Thread[Thread-0,10,main]: 22
Thread[Thread-0,10,main]: 21
Thread[Thread-0,10,main]: 20
Thread[Thread-0,10,main]: 19
Thread[Thread-0,10,main]: 18
Thread[Thread-0,10,main]: 17
Thread[Thread-0,10,main]: 16
Thread[Thread-0,10,main]: 15
Thread[Thread-0,10,main]: 14
Thread[Thread-0,10,main]: 13
Thread[Thread-0,10,main]: 12
Thread[Thread-0,10,main]: 11
Thread[Thread-0,10,main]: 10
Thread[Thread-0,10,main]: 9
Thread[Thread-0,10,main]: 8
Thread[Thread-0,10,main]: 7
Thread[Thread-0,10,main]: 6
Thread[Thread-0,10,main]: 5
Thread[Thread-0,10,main]: 4
Thread[Thread-0,10,main]: 3
Thread[Thread-0,10,main]: 2
Thread[Thread-0,10,main]: 1
Thread[Thread-2,5,main]: 30
Thread[Thread-3,5,main]: 30
Thread[Thread-2,5,main]: 29
Thread[Thread-3,5,main]: 29
Thread[Thread-2,5,main]: 28
Thread[Thread-3,5,main]: 28
Thread[Thread-2,5,main]: 27
Thread[Thread-3,5,main]: 27
Thread[Thread-2,5,main]: 26
Thread[Thread-3,5,main]: 26
Thread[Thread-2,5,main]: 25
Thread[Thread-3,5,main]: 25
Thread[Thread-2,5,main]: 24
Thread[Thread-3,5,main]: 24
Thread[Thread-2,5,main]: 23
Thread[Thread-3,5,main]: 23
Thread[Thread-3,5,main]: 22
Thread[Thread-2,5,main]: 22
Thread[Thread-2,5,main]: 21
Thread[Thread-3,5,main]: 21
Thread[Thread-3,5,main]: 20
Thread[Thread-2,5,main]: 20
Thread[Thread-2,5,main]: 19
Thread[Thread-3,5,main]: 19
Thread[Thread-3,5,main]: 18
Thread[Thread-2,5,main]: 18
Thread[Thread-2,5,main]: 17
Thread[Thread-3,5,main]: 17
Thread[Thread-3,5,main]: 16
Thread[Thread-2,5,main]: 16
Thread[Thread-2,5,main]: 15
Thread[Thread-3,5,main]: 15
Thread[Thread-2,5,main]: 14
Thread[Thread-3,5,main]: 14
Thread[Thread-3,5,main]: 13
Thread[Thread-2,5,main]: 13
Thread[Thread-2,5,main]: 12
Thread[Thread-3,5,main]: 12
Thread[Thread-1,1,main]: 30 //为什么在这边插进去一个低级线程?
Thread[Thread-3,5,main]: 11
Thread[Thread-2,5,main]: 11
Thread[Thread-2,5,main]: 10
Thread[Thread-3,5,main]: 10
Thread[Thread-3,5,main]: 9
Thread[Thread-2,5,main]: 9
Thread[Thread-2,5,main]: 8
Thread[Thread-3,5,main]: 8
Thread[Thread-3,5,main]: 7
Thread[Thread-2,5,main]: 7
Thread[Thread-2,5,main]: 6
Thread[Thread-3,5,main]: 6
Thread[Thread-3,5,main]: 5
Thread[Thread-2,5,main]: 5
Thread[Thread-3,5,main]: 4
Thread[Thread-2,5,main]: 4
Thread[Thread-3,5,main]: 3
Thread[Thread-2,5,main]: 3
Thread[Thread-3,5,main]: 2
Thread[Thread-2,5,main]: 2
Thread[Thread-3,5,main]: 1
Thread[Thread-2,5,main]: 1
Thread[Thread-1,1,main]: 29
Thread[Thread-1,1,main]: 28
Thread[Thread-1,1,main]: 27
Thread[Thread-1,1,main]: 26
Thread[Thread-1,1,main]: 25
Thread[Thread-1,1,main]: 24
Thread[Thread-1,1,main]: 23
Thread[Thread-1,1,main]: 22
Thread[Thread-1,1,main]: 21
Thread[Thread-1,1,main]: 20
Thread[Thread-1,1,main]: 19
Thread[Thread-1,1,main]: 18
Thread[Thread-1,1,main]: 17
Thread[Thread-1,1,main]: 16
Thread[Thread-1,1,main]: 15
Thread[Thread-1,1,main]: 14
Thread[Thread-1,1,main]: 13
Thread[Thread-1,1,main]: 12
Thread[Thread-1,1,main]: 11
Thread[Thread-1,1,main]: 10
Thread[Thread-1,1,main]: 9
Thread[Thread-1,1,main]: 8
Thread[Thread-1,1,main]: 7
Thread[Thread-1,1,main]: 6
Thread[Thread-1,1,main]: 5
Thread[Thread-1,1,main]: 4
Thread[Thread-1,1,main]: 3
Thread[Thread-1,1,main]: 2
Thread[Thread-1,1,main]: 1我的个人想法:
是不是这个是属于main的线程,此时他的优先级是5,要是真的如此,那又为什么会在这么后面才出来呢?(显示结果)。
还是另有原因?虚拟机的问题?........
各位大侠都说说自己的看法,个人感觉这个问题还是比较有深度的,不知道还有没有人发现类似的问题。准备把这个作为我第一个提交FAQ的问题,大家支持一下,呵呵。
//在windows环境下,不同优先级的线程运行,调度器是采用抢占式调度,这个怎么解释?
//在windows环境下,不同优先级的线程运行,调度器是采用抢占式调度,这个怎么解释?
==============================================================================
在我的机子上有一次竟然出现
Thread[Thread-0,10,main]: 30
Thread[Thread-0,10,main]: 29
Thread[Thread-0,10,main]: 28
Thread[Thread-0,10,main]: 27
Thread[Thread-0,10,main]: 26
Thread[Thread-0,10,main]: 25
Thread[Thread-3,5,main]: 30
Thread[Thread-3,5,main]: 29
Thread[Thread-3,5,main]: 28这该怎么解释?当然也是唯一的一次