`

错误: 非法字符: '\uff0c'

阅读更多
class Res{
	private String name;
	private String sex;
	private boolean flag =  false;
	
	public synchronized void set(String name,String sex){
		if(flag){
			try{this.wait();}catch(Exception e){}
		}
		this.name = name;
		this.sex = sex;
		
		flag = true;
		this.notify();
	}
	
	public synchronized void out(){
		if(!flag){
			try{this.wait();}catch(Exception e){}
		}
		System.out.println(name+"--"+sex);
		flag = false;
		this.notify();
	}
}

class Input implements Runnable{
	private Res r;

	Input(Res r){
		this.r = r;
	}
	public void run(){
		int x = 0;
		while(true){
			if(x==0){
				r.set("mike","man");
			}
			else{
					r.set("哈哈","女");
			}
			x = (x+1)%2;
		}
	}
}

class Output implements Runnable{
	private Res r;
	Output(Res r){
		this.r = r;
	}
	public void run(){
		while(true){
			r.out();
		}
	}
}

class InputOutput{
	public static void main(String[] args){
		Res r = new Res();
		
		new Thread(new Input(r)).start();
		new Thread(new Output(r)).start();
		
		/*Input in = new Input(r);
		Output out = new Output(r);
		
		Thread t1 = new Thread(in);
		Thread t2 = new Thread(out);
		
		t1.start();
		t2.start();*/
	}
}
/*
wait();notify();notifyAll();
都使用在同步中,因为要对持有监视器(锁)的线程中操作。
所以要使用在同步中,因为只有同步才具有锁。

为什么这些操作线程的方法要定义在Object类中呢?
因为这些方法在操作同步的线程时,都必须要标识它们所操作
线程持有的锁。只有同一个锁上的被等待线程,可以被同一个锁上的
notify唤醒。不可以对不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。
而锁可以是任意对象,所以可以被任意对象调用的方法定义在Object
类中。
*/

——————————————————————
原因:
哈哈和女之间的分号为中文的逗号。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics