JAVA学习探究:多进程的同步控制

java的多进程同步控制

  • 当多进程以异步方式访问共享数据时,存在不安全隐患,不符合用户的预期设计。所以当一个线程访问共享数据的时候应该将其操作变成一个“原子操作”,也就说当一个线程访问共享数据时,该操作不允许被打断,即该共享数据被该线程独占。
  • 在并发程序中,对多线程共享的资源或者数据称为同步资源,每个线程访问临界资源的那一段代码称为临界代码或者临界区。对于临界区需要互斥的使用,java语言利用对象的“互斥锁”机制来实现互斥操作。

在java语言中,为了保证互斥,同步资源用关键字synchronized来标识。下来我们介绍一下synchronized关键字的一些需要记忆的点。
(1)用synchronized标识同一个临界区(含对所有共享变量的操作)时,线程的synchronized代码块之间是串行执行的(原因:互斥)。
(2)若多个线程锁定的是不是同一个对象,则他们的synchronized代码块可以互相交替穿插并发执行。
(3)synchronized代码块中代码应该精简。
(4)所有的非synchronized代码块或者方法可以自由调用。
(5)一个线程在条件允许下可以拥有多个对象的互斥锁,但是一个对象的互斥锁在一个时刻只能被一个线程拥有。
(6)一旦某个线程进入临界区后,便只能等待该临界区的代码执行完之后,线程才会释放临界区,然后其他线程才能进入临界区。
(7)临界区中的共享变量应该设置为private型,因而只能用临界区中的方法来访问共享变量。锁定对象常常是this,其格式为:

synchronized(this){
}

(8)通常共享变量声明为私有静态变量。
(9)对于一个static型的方法,要么整个方法是synchronized,要么整个方法都不是synchronized。
(10)synchronized用在类声明中,表示该类的所有方法都是synchronized的。

synchronized关键字的用法如下:

  • 用法1:同步语句
synchronized(object){
   
	//临界代码
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值