java同步塊

ustcyy91發表於2016-12-01

四個人吃飯 只有一個勺子 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();
}
}




}
}


或者使用同步程式碼塊方法:

相關文章