java同步块

本文通过一个形象的比喻介绍了Java中同步块的基本概念,并提供了一个使用同步块来控制多线程访问共享资源的示例。该示例演示了如何利用同步块确保线程安全地操作共享变量。

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




}
}


或者使用同步代码块方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值