java多线程的问题?-函数Thread.sleep(3);

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:19:58
class threadTest extends Thread{ // 程序9-4
threadTest(String str){ super(str); }

public void run( ){
try{
Thread.sleep(3);//这个多线程睡眠时间跟结果是怎么运行的?
}
catch(InterruptedException e) {System.err.println(e.toString( ));}

System.out.println(getName( )+" " +getPriority( ));
}
}
public class Test4{
public static void main(String agrs[]){
Thread one=new threadTest("one" );
Thread two=new threadTest("two" );
Thread three=new threadTest("three" );

one.setPriority(Thread.MIN_PRIORITY);
two.setPriority(Thread.NORM_PRIORITY);
three.setPriority(Thread.MAX_PRIORITY);

one.start( );
two.start( );
three.start( );
}
}

睡眠时间不同,反正都是从start()开始的,为什么不是按顺序运行出来,难道只能是第一个在睡眠吗?

同时多线程Simultaneous multithreading,简称SMT。SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。SMT最具吸引力的是只需小规模改变处理器核心的设计,几乎不用增加额外的成本就可以显著地提升效能。多线程技术则可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。这对于桌面低端系统来说无疑十分具有吸引力。Intel从3.06GHz Pentium 4开始,所有处理器都将支持SMT技术。