四个人吃饭 只有一个勺子 4个人中只有一个人能吃饭,并且这个人必须是有勺子的人,而这个勺子就相当于同步快中的监视点!
同步块的结构如下:
synchronized(someobject)
{
代码块
}
代码示例:
package demo.example.com;
public class Threadtest3 {
public static void main(String[] args) {
Computer4 t=new Computer4();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}
class Computer4 extends Thread{
char ch;
int i=10;
Object obj=new Object(); //使用同步块一定要先实例化一个Object对象作为同步块的监视点!
void print(){
System.out.println(Thread.currentThread().getName()+":"+i);
i--;
}
public void run(){
while(i>0){
synchronized (obj) {
print();
} //同步代码块
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
或者使用同步代码块方法: