JUC高并发编程
二、Lock 接口
2.1)Synchronized
2.1.1)Synchronized 关键字简介
synchronized 是 Java 中的关键字,是一种同步锁,它修饰的对象有以下几种:
-
修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{} 括起来的代码,作用的对象是调用这个代码块的对象;
-
修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。
如果在父类中的某个方法使用了synchronized关键字,而在子类中复写了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上 synchronized关键字才可以。还可以在子类方法中调用父类中相应的方法,这样虽然子类中的方法不是同步的,但子类调用了父类的同步方法,因此, 子类的方法也就相当于同步了。
-
修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
-
修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。
2.1.2)使用Synchronized 关键字示例
使用Synchronized 关键字实现卖票的示例:
package com.study.sync;
//第一步 创建资源类,定义属性和和操作方法
class Ticket {
//票数
private int number = 30;
//操作方法:卖票
public synchronized void sale() {
//判断:是否有票
if (number > 0) {
System.out.println(Thread.currentThread().getName() + " : 卖出:" + (number--) + " 剩下:" + number);
}
}
}
public class SaleTicket {
//第二步 创建多个线程,调用资源类的操作方法
public static void main(String[] args) {
//创建Ticket对象
Ticket ticket = new Ticket();
//创建
Java并发编程:Lock接口详解

本文介绍了Java并发编程中的Lock接口,对比了synchronized关键字的使用,详细讲解了synchronized的特性及示例,以及Lock接口的优势和使用示例,展示了两者在并发控制上的不同之处。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



