没有合适的资源?快使用搜索试试~ 我知道了~
Java并发学习笔记(二)——Synchronized关键字与ReetrantLock同步锁
1 下载量 141 浏览量
2020-12-20
21:37:54
上传
评论
收藏 77KB PDF 举报
温馨提示
试读
5页
一、Synchronized 1、概念 synchronized保证被修饰的方法或代码块操作的原子性、可见性和有序性。synchronized可重入锁、不可中断,适合线程竞争不激烈。 被Synchronized 关键字描述的方法或代码块在多线程环境下同一时间只能由一个线程进行访问,因为在持有当前锁的线程执行完成之前,其他线程想要调用相关方法就必须进行排队,直到当前线程执行完成才释放锁给其他线程,所以保证了原子性。 被Synchronized 关键字描述的方法或代码块在多线程环境下数据是同步的,即当获取到锁后先将内存复制到自己的缓存中操作,释放锁之前会把缓存中的数据复制到共享内存中,所以保证了可
资源详情
资源评论
资源推荐
Java并发学习笔记(二)并发学习笔记(二)——Synchronized关键字与关键字与
ReetrantLock同步锁同步锁
一、一、Synchronized
1、概念、概念
synchronized保证被修饰的方法或代码块操作的原子性、可见性和有序性。synchronized可重入锁、不可中断,适合线程竞争
不激烈。
被Synchronized 关键字描述的方法或代码块在多线程环境下同一时间只能由一个线程进行访问,因为在持有当前锁的线程执
行完成之前,其他线程想要调用相关方法就必须进行排队,直到当前线程执行完成才释放锁给其他线程,所以保证了原子性。
被Synchronized 关键字描述的方法或代码块在多线程环境下数据是同步的,即当获取到锁后先将内存复制到自己的缓存中操
作,释放锁之前会把缓存中的数据复制到共享内存中,所以保证了可见性。
被Synchronized 关键字描述的方法或代码块在多线程环境下同一时间只能由一个线程访问,代码内部是有序的,不会出发
JMM指令重排机制,所以保证了有序性。
在使用Sychronized关键字时需要把握如下注意点:
一把锁只能同时被一个线程获取,没有获得锁的线程只能等待;
每个实例都对应有自己的一把锁(this),不同实例之间互不影响;例外:锁对象是*.class以及synchronized修饰的是static方法的
时候,所有对象公用同一把锁
synchronized修饰的方法,无论方法正常执行完毕还是抛出异常,都会释放锁
2、对象锁、对象锁
包括方法锁(默认锁对象为this,当前实例对象)和同步代码块锁(自己指定锁对象)
代码块形式代码块形式:
手动指定锁定对象,也可是是this,也可以是自定义的锁
示例1
public class SynchronizedObjectLock implements Runnable {
static SynchronizedObjectLock instence = new SynchronizedObjectLock();
@Override
public void run() {
// 同步代码块形式——锁为this,两个线程使用的锁是一样的,线程1必须要等到线程0释放了该锁后,才能执行
synchronized (this) {
System.out.println("我是线程" + Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "结束");
}
}
public static void main(String[] args) {
Thread t1 = new Thread(instence);
Thread t2 = new Thread(instence);
t1.start();
t2.start();
}
}
输出结果:
我是线程Thread-0
Thread-0结束
我是线程Thread-1
Thread-1结束
示例2
public class SynchronizedObjectLock implements Runnable {
static SynchronizedObjectLock instence = new SynchronizedObjectLock();
// 创建2把锁
Object block1 = new Object();
weixin_38670983
- 粉丝: 6
- 资源: 876
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0