我解决了一个问题,其条件听起来是这样的:“有两个线程,其中一个计算自会话开始以来经过的时间量,另一个线程每秒输出一次这种差异。有必要组织程序,使定时器线程通知输出线程。使用wait()和notify()。” 我删除了代码的细节,只留下同步结构。请确切地告诉我应该如何编写我的代码,在哪个对象上同步,何时获取锁,何时通知以及何时释放。
线程定时器:
public void run()
{
while(true)
{
synchronized(lock)
{
// высчитываю разницу
}
}
}
输出流:
public void run()
{
try
{
synchronized(Timer.lock)
{
if (Thread.currentThread().getState() == RUNNABLE )
{
System.out.println(Timer.differeceInTime);
wait();
}
}
}
catch(InterruptedException e)
{
}
条件if (Thread.currentThread().getState() == RUNNABLE)显示错误, write == RUNNABLE,据我所知,是不正确的。我还想知道如何正确设置这样的条件(“如果线程处于活动状态”)
打开通灵模式并试图了解你想要什么。结果,我收到了以下代码。
首先,我们需要一个包含线程将交换的结果的类。此类的一个对象也将是一个同步对象。为了正确工作,还需要添加结果准备字段。
我们还需要一个创建这个结果的类。
输出类将如下所示:
要运行整个公司,您需要为每个类对象创建一个线程。