📄 j_waitnotify.java
字号:
package creaatThread;
class J_Expriment
{
private int m_temperature, m_pressure;
private boolean m_ready = false;
public synchronized void mb_update(int t, int p)
{
System.out.println("enter update method");
if(m_ready)
{
System.out.println(" waiting for analyze data");
try
{
wait();
}
catch(Exception e)
{
System.err.println("err found mb_update( "+t+" , "+p+" )");
e.printStackTrace();
}
System.out.println(" go on updating data");
}//if
m_temperature = t;
m_pressure = p;
System.out.println("update finish temperature = "+ t + " , pressure = "+p);
m_ready = true;
notify();
}//mb_update
public synchronized void mb_analyze()
{
System.out.println("enter analyze method");
if(!m_ready)
{
System.out.println(" waint for update data");
try
{
wait();
}
catch(Exception e)
{
System.err.println("err found mb_analyze( )");
e.printStackTrace();
}
System.out.println(" go on analyze data");
}//if
int t = m_temperature;
int p = m_pressure;
System.out.println("analyze finish temperature = "+t+" , pressure = "+p);
m_ready = false;
notify();
}//mb_analyze()
}//class J_Expriment
class J_Assistant extends Thread
{
J_Expriment m_data;
public J_Assistant(J_Expriment d)
{
m_data = d;
}
public void run()
{
System.out.println("Assistant begin tho process data");
int i, j, k;
for(k = 0; k < 3; k++)
{
i = (int)(Math.random() * 1000);
j = (int)(Math.random() * 1000);
m_data.mb_update(i, j);
}//for
System.out.println("Assitant finish process data");
}//run
}//J_Assistant
class J_Analyst extends Thread
{
J_Expriment m_data;
public J_Analyst(J_Expriment d)
{
m_data = d;
}
public void run()
{
System.out.println("Analyst begin to work");
for(int k = 0; k < 3; k++)
{
m_data.mb_analyze();
}//for
System.out.println("Analyst finish his work");
}
}//J_Analyst
public class J_WaitNotify {
/**
* @param args
*/
public static void main(String [] args)
{
J_Expriment data = new J_Expriment();
J_Assistant threadA = new J_Assistant(data);
J_Analyst threadB = new J_Analyst(data);
threadA.start();
threadB.start();
System.out.println("main end");
}//main
}//J_WaitNotify
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -