/**
线程之间的通信
*/
// 定义共享资源
class ShareSource
{
public boolean tag = true;
}
// 定义线程你
class You extends Thread
{
ShareSource s = null;
public You(){
}
public You( ShareSource s , String name ){
super(name);
this.s = s;
}
public void run(){
// 说话
synchronized( s ){
while(true){
if( !s.tag ){
// 你不说话,等待
try
{
s.wait();
}
catch (InterruptedException e)
{
}
}
// 你说话
System.out.println( this.getName()+"说:\" 你好,这些年的过的好吗?\" ");
// 设置标记
s.tag = false;
// 通知
s.notify();
}
}
}
}
class Me extends Thread
{
ShareSource s = null;
public Me(){
}
public Me( ShareSource s , String name ){
super(name);
this.s = s;
}
public void run(){
synchronized(s){
while(true){
// 说话
if( s.tag ){
// 我不说话,我等待
try
{
s.wait();
}
catch (InterruptedException e)
{
}
}
// 我说话
System.out.println( this.getName()+"说:\"你好,这些我过的还可以!\" ");
// 设置标记
s.tag = true;
// 通知
s.notify();
}
}
}
}
class Demo12
{
public static void main(String[] args)
{
// 创建资源对象
ShareSource s = new ShareSource();
new Me( s, "me" ).start();
new You( s, "you" ).start();
// System.out.println("Hello World!");
}
}
疑惑:
请问 这个锁该如何设置?
有什么规定的吗? 怎么样锁?
|
|