Java锁的基础认知
一、同步代码块
1、概述
synchronized() {需要同步的代码
}
1)对象是什么?
创建共享的锁对象
2)需要同步的代码是哪些?
把多条语句操作共享数据的代码的部分包起来
2、特点
同步的前提:1、多个线程 2、多个线程使用的是同一个对象
同步的好处:同步的出现解决了多线程的安全问题
同步的弊端:当线程相当多的时候,因为每个线程都会区判断同步上的锁,这样子很耗费资源,无形中降低了程序运行的效率
3、关于同步代码块的问题
1)同步代码块的锁对象是?
任意对象
2)同步方法的格式以及锁对象问题?
把同步关键字放在方法上
3)同步的方法是?
this.
4)静态方法以及锁对象问题?
静态方法的锁对象是类的字节码文件对象
4、Lock(锁)
1)作用
更清晰的表达如何加锁和释放锁
2)方法:
void lock();//获取锁
void unlock();//释放锁
5、同步的弊端
1)效率低
2)容易产生死锁
死锁:两个或两个以上的线程在争太资源的过程中,发生的一种相互等待的现象
6、线程间的通讯问题
不同种类的线程间针对一个资源的操作
注意:
1)不同种类的线程都要加锁
2)不同种类的线程加的锁必须是同一把
7、等待唤醒机制
Object类中提供了三个方法:
wait();//等待
notify();//唤醒单个线程
notifyAll();//唤醒多个线程
8、定时器
1)概念
可以在指定的时间做某一件事情,还可以重复的做某一件事情,以来的时Timer和TimerTask两个类
2)Timer(定时)和TimerTask(任务)
public Timer();
public void schedule(TimerTask task, long delay);
public void schedule(TimerTask task, long delay, long period);
public void cancel();
9、sleep和wait区别
sleep()必须指时间,且不释放锁
wait()可以不指定时间,也可以指定时间,释放锁
Java锁的基础认知相关推荐
- Java学习日记1——基础认知
Java学习日记1--基础认知 学习Java阶段,如果发现不正确的描述,还请指正! 首先附上Java相关下载链接和配置教程链接 Java相关软件工具下载地址:官方下载 Java环境配置(win10配置 ...
- 并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础
欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...
- 铂金1:探本溯源-为何说Lock接口是Java中锁的基础
欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...
- 密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制
写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启.确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话,这个问题我也思考了很久,也没法很 ...
- Java锁深入理解5——共享锁
前言 本篇博客是<Java锁深入理解>系列博客的第五篇,建议依次阅读. 各篇博客链接如下: Java锁深入理解1--概述及总结 Java锁深入理解2--ReentrantLock Java ...
- Java万字长文基础知识总结
面向对象概念 面向对象和面向过程的区别? 面向过程:面向过程性能比面向对象高.因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机.嵌入式开发.Linux/ ...
- Java并发编程基础--ThreadLocal
Java并发编程基础之ThreadLocal ThreadLocal是一个线程变量,但本质上是一个以ThreadLocal对象为键.任意对象为值的存储结构,这个结构依附在线程上,线程可以根据一个T ...
- Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”
在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 线程锁 乐观锁 VS 悲 ...
- shadowplay要下载java_Java并发程序设计(二)Java并行程序基础
Java并行程序基础 一.线程的生命周期 其中blocked和waiting的区别: 作者:赵老师 链接:https://www.zhihu.com/question/27654579/answer/ ...
最新文章
- 基于投票方式的机器人装配姿态估计
- IBM磁带库中更换磁带的步骤
- 增强for循环_增强for循环实际用法
- vhd 镜像 备份Linux,差分VHD 系统秒备份、秒还原教程 完胜GHOST
- upc 9519 New Game
- 学习 - java位运算符
- Python批量删除错误图片、修改文件名以及删除重复图片
- 自动部署 php,Jenkins实现PHP的自动部署
- 显示器分辨率一直跳_2020如何选择适合自己的显示器?小白选购电脑显示器必看!...
- NetworkManager概述
- 【干货】比赛后期大招之stacking技术分享
- 翻译的艺术 —— 专有名词(广告词、国外品牌、语言等)
- 大数据预测分析是否对企业有影响
- java兵临城下_再谈java事件监听机制
- 【Cocoa(mac) Application 开发系列之二】总结一些常用控件及自定义View
- C# WinForm中NotifyICon控件的用法
- Mouse Without Borders 使用经验
- linux 系统中没有rpm命令
- 下列选项中 采用边界值平滑_2014年10月湖南自考:软件工程全真模拟试题二
- 软件工程——软件维护总结