当前位置: 技术问答>java相关
关于线程的简单问题!
来源: 互联网 发布时间:2017-04-06
本文导语: 有两个类: public class a { public static void main( String args[] ) { b m_b = new b(); m_b.start(); try{ m_b.sleep(1000); }catch( Exception e ){} ...
有两个类:
public class a
{
public static void main( String args[] )
{
b m_b = new b();
m_b.start();
try{
m_b.sleep(1000);
}catch( Exception e ){}
}
}
class b extends Thread
{
public void run()
{
while( true ){
System.out.println( "Hello" );
}
}
}
我现在想在类A中启动线程B并且随时休眠它,但好象不行,
(把主线程休眠了,并没有影响线程B) 请高人指点。
public class a
{
public static void main( String args[] )
{
b m_b = new b();
m_b.start();
try{
m_b.sleep(1000);
}catch( Exception e ){}
}
}
class b extends Thread
{
public void run()
{
while( true ){
System.out.println( "Hello" );
}
}
}
我现在想在类A中启动线程B并且随时休眠它,但好象不行,
(把主线程休眠了,并没有影响线程B) 请高人指点。
|
这句有问题CPU占用率太高,把主线程挤死了,加个sleep(100)或者加个sychronize试试:
while( true ){
System.out.println( "Hello" );
}
while( true ){
System.out.println( "Hello" );
}
|
public void run()
{
while( true ){
System.out.println( "Hello" );
try{
this.sleep( 1000 );
}catch(Exception e){}
}
}
{
while( true ){
System.out.println( "Hello" );
try{
this.sleep( 1000 );
}catch(Exception e){}
}
}
|
呵呵,你想暂停b线程,用sleep只不行的来,用b.suspend来暂停,不过最安全的方法是在b线程加一个标志,A线程去修改这个标志,而b检测到标志后就暂时休眠。
|
老大,你的逻辑有问题啊:
你以为在主线程调用 Thread_B.sleep (1000) 就会让 B 线程 Sleep 啊???
Sleep 是 static 的,不针对任何对象的,你在哪个线程调用,就使哪个线程 Sleep 啊………………
sleep
public static void sleep(long millis)
throws InterruptedExceptionCauses the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.
你以为在主线程调用 Thread_B.sleep (1000) 就会让 B 线程 Sleep 啊???
Sleep 是 static 的,不针对任何对象的,你在哪个线程调用,就使哪个线程 Sleep 啊………………
sleep
public static void sleep(long millis)
throws InterruptedExceptionCauses the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.
|
Sleep是static 你的调用相当于Thread.sleep(1000); 所以 主线程给休眠了