给你写一个简单示例:class Buffer{ public synchronized void write(){ System.out.println("write!"); } public synchronized void read(){ System.out.println("read!"); } }class WriteThread extends Thread{ Buffer data; public WriteThread(Buffer d){ data = d; } public void run(){ int i =100; while(i>0){ i--; data.write(); } } }class ReadThread extends Thread{ Buffer data; public ReadThread(Buffer d){ data = d; } public void run(){ int i =100; while(i>0){ i--; data.read(); } } }public class test { public static void main(String a[]){ Buffer d = new Buffer(); WriteThread wt = new WriteThread(d); ReadThread rt = new ReadThread(d); wt.start(); rt.start(); }}结果你会看到read和write交替进行,也就是说读和写两个线程并发进行,但是对Buffer的read和write方法却是同步的。你可以在这两个方法里面对共享的缓冲区进行操作。
public synchronized void write(){
System.out.println("write!");
}
public synchronized void read(){
System.out.println("read!");
}
}class WriteThread extends Thread{
Buffer data;
public WriteThread(Buffer d){
data = d;
}
public void run(){
int i =100;
while(i>0){
i--;
data.write();
}
}
}class ReadThread extends Thread{
Buffer data;
public ReadThread(Buffer d){
data = d;
}
public void run(){
int i =100;
while(i>0){
i--;
data.read();
}
}
}public class test {
public static void main(String a[]){
Buffer d = new Buffer();
WriteThread wt = new WriteThread(d);
ReadThread rt = new ReadThread(d);
wt.start();
rt.start();
}}结果你会看到read和write交替进行,也就是说读和写两个线程并发进行,但是对Buffer的read和write方法却是同步的。你可以在这两个方法里面对共享的缓冲区进行操作。