日期:2014-05-20  浏览次数:21014 次

咋多线程变成单线程了?
5各类,都继承自Thread,但互相之间没有任何关系。我用主类中的方法启动它们。跟踪的结果发现ThreadGroup中一共有5个Thread,依次是Thread_1,Thread_2,Thread_3,Thread_4,Thread_5,用getState()获得的状态都是Runable,优先级都是5,但是,除了Thread_5以外,其它的Thread始终无法获得CPU时间片,感觉成了单线程了啊。不想这样的。
这个有什么办法分析或者跟踪下那?

------解决方案--------------------
我来关注了

多线程 也是一个一个运行的

不会一起运行的


------解决方案--------------------
回复人:anod() ( 二级(初级)) 信誉:93 2007-6-3 0:50:49 得分:0
?

问题是:
其它的线程就没有获得时间片啊。
Thread_5是一个处理消息的线程,所以由一个while(true)作为主体。但我在里面已经放了个sleep(500)进去,可是其它的线程仍然不能获得CPU时间片。

---------------------
一个线程有sleep后,其他线程是肯定能获得时间片的.除非你只启动了这么一个线程


回复人:anod() ( 二级(初级)) 信誉:93 2007-6-3 1:57:41 得分:0
?

是一个软件的一部分,好多......
能不能指个方向,我再跟踪试试看...............
--------------------------------------------------
把程序里面注释到只保留线程相关的代码,试试..成功再加其他代码,分批试.

------解决方案--------------------
系统起动线程是要一定时间的,每个线程做事情的时间长些,就会看到了
------解决方案--------------------
在每个线程里打印点东西看看
------解决方案--------------------
能 把代码 贴 出来吗 关注

------解决方案--------------------
public class ThreadTest
{
public static void main(String[] args)
{
Thread_1 th_1 = new Thread_1();
th_1.start();

Thread_2 th_2 = new Thread_2();
th_2.start();

Thread_3 th_3 = new Thread_3();
th_3.start();

Thread_4 th_4 = new Thread_4();
th_4.start();

Thread_5 th_5 = new Thread_5();
th_5.start();
}
}

class Thread_1 extends Thread
{
public void run()
{
while(true)
System.out.println(getName());
}
}

class Thread_2 extends Thread
{
public void run()
{
while(true)
System.out.println(getName());
}
}

class Thread_3 extends Thread
{
public void run()
{
while(true)
System.out.println(getName());
}
}

class Thread_4 extends Thread
{
public void run()
{
while(true)
System.out.println(getName());
}
}

class Thread_5 extends Thread
{
public void run()
{
while(true)
System.out.println(getName());
}
}

5个线成 全运行了呀
------解决方案--------------------
路过!~