【发布时间】:2013-12-06 09:52:17
【问题描述】:
所以我有一个使用 2 个线程打印 Hello 和 Goodbye 的程序。 我需要打印 Hello 100 次和 Goodbye 100 次。 这工作正常,但是,在打印之后,程序挂起并且没有完成。 我有一种感觉是因为线程没有完成。
我想知道最好的方法是什么?
所以我的主要是这样的
public static void main(String [] args)
{
Object lock = new Object();
new HelloThread(lock).start();
new GoodbyeThread(lock).start();
}
这里是 HelloThread 类。 GoodbyeThread 看起来一样:
class HelloThread extends Thread
{
private Object lock;
private boolean isRunning = false;
HelloThread(Object l)
{
this.lock = l;
}
public void run()
{
for(int i = 0; i < 100; i++)
{
synchronized(lock)
{
isRunning = true;
System.out.println("Hello");
lock.notify();
try
{
lock.wait();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
我在想可能有一种方法可以使用 isRunning 变量来关闭线程,但是我不确定最好的方法是什么。 感谢您的帮助
【问题讨论】:
-
isRunning变量的意义何在? -
@MadConan 这只是我为了让它工作而留下的东西
标签: java multithreading synchronized