public class Multithreading { public static void main(String[] args)
{
Test he=new Test();
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
}
}
class Test implements Runnable
{
int top=1;
public void run()
{
while(top>0)
{
try{
Thread.sleep(1);
}catch(Exception e)
{}
System.out.println(Thread.currentThread().getName().toString()+"is running:top="+top--);
}
}
}
为什么当top取值为1时,线程按顺序执行,top取其他值时,没有这种现象?
{
Test he=new Test();
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
new Thread(he).start() ;
}
}
class Test implements Runnable
{
int top=1;
public void run()
{
while(top>0)
{
try{
Thread.sleep(1);
}catch(Exception e)
{}
System.out.println(Thread.currentThread().getName().toString()+"is running:top="+top--);
}
}
}
为什么当top取值为1时,线程按顺序执行,top取其他值时,没有这种现象?
这个是你的条件么,满足这个不就全都开启了么,不知道你想问些什么
while(top>0)
这个是你的条件么,满足这个不就全都开启了么,不知道你想问些什么
/////////////////
是的,线程会全部开启,而且他是个线程不安全类.我想要明白的是:如果我将top值改为大于1的值时,线程启动的顺序无规则,但是当top的值改成1,线程启动的顺序一定严格按照0.1.2.3.4.5.6.7的顺序启动,为什么?
chinson(鹤巢) (
我试了几个值,都会按顺序,最后显示到-6啊
///////////////////////
你搞没搞清楚,线程的启动顺序不是看那个top的取值,要看"Thread.currentThread().getName().toString()".
线程调度 是 OS 的事情
为抗击微软
楼主预用 JAVA 写 OS?
是静安寺不是道明寺,是源程序不是言承旭;是在静安寺写源程序,不是在流星花园看F4。
Thread-1is running:top=3
Thread-2is running:top=2
Thread-3is running:top=1
Thread-4is running:top=0
Thread-5is running:top=-1
Thread-6is running:top=-2
Thread-7is running:top=-3
Thread-0is running:top=-4
Thread-1is running:top=-5
Thread-2is running:top=-6
如果TOP等于4或者其它值也是按顺序执行呀。
这上面就是top=4的结果。