一、同步代码块

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锁的基础认知相关推荐

  1. Java学习日记1——基础认知

    Java学习日记1--基础认知 学习Java阶段,如果发现不正确的描述,还请指正! 首先附上Java相关下载链接和配置教程链接 Java相关软件工具下载地址:官方下载 Java环境配置(win10配置 ...

  2. 并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

    欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...

  3. 铂金1:探本溯源-为何说Lock接口是Java中锁的基础

    欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...

  4. 密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制

    写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启.确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话,这个问题我也思考了很久,也没法很 ...

  5. Java锁深入理解5——共享锁

    前言 本篇博客是<Java锁深入理解>系列博客的第五篇,建议依次阅读. 各篇博客链接如下: Java锁深入理解1--概述及总结 Java锁深入理解2--ReentrantLock Java ...

  6. Java万字长文基础知识总结

    面向对象概念 面向对象和面向过程的区别? 面向过程:面向过程性能比面向对象高.因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机.嵌入式开发.Linux/ ...

  7. Java并发编程基础--ThreadLocal

    Java并发编程基础之ThreadLocal ​ ThreadLocal是一个线程变量,但本质上是一个以ThreadLocal对象为键.任意对象为值的存储结构,这个结构依附在线程上,线程可以根据一个T ...

  8. Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”

    在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 线程锁 乐观锁 VS 悲 ...

  9. shadowplay要下载java_Java并发程序设计(二)Java并行程序基础

    Java并行程序基础 一.线程的生命周期 其中blocked和waiting的区别: 作者:赵老师 链接:https://www.zhihu.com/question/27654579/answer/ ...

最新文章

  1. 基于投票方式的机器人装配姿态估计
  2. IBM磁带库中更换磁带的步骤
  3. 增强for循环_增强for循环实际用法
  4. vhd 镜像 备份Linux,差分VHD 系统秒备份、秒还原教程 完胜GHOST
  5. upc 9519 New Game
  6. 学习 - java位运算符
  7. Python批量删除错误图片、修改文件名以及删除重复图片
  8. 自动部署 php,Jenkins实现PHP的自动部署
  9. 显示器分辨率一直跳_2020如何选择适合自己的显示器?小白选购电脑显示器必看!...
  10. NetworkManager概述
  11. 【干货】比赛后期大招之stacking技术分享
  12. 翻译的艺术 —— 专有名词(广告词、国外品牌、语言等)
  13. 大数据预测分析是否对企业有影响
  14. java兵临城下_再谈java事件监听机制
  15. 【Cocoa(mac) Application 开发系列之二】总结一些常用控件及自定义View
  16. C# WinForm中NotifyICon控件的用法
  17. Mouse Without Borders 使用经验
  18. linux 系统中没有rpm命令
  19. 下列选项中 采用边界值平滑_2014年10月湖南自考:软件工程全真模拟试题二
  20. 软件工程——软件维护总结

热门文章

  1. 我与CSDN两年的恩怨情仇
  2. 七夕到了!不会写代码?一样可以给女朋友建个网站
  3. JavaWeb商城订单模型+分页模型(JavaWeb+jsp+Ajax)
  4. 接入腾讯应用宝(YSDK)注意事项
  5. 各地图平台的坐标拾取系统
  6. 关于IDEA中代码快速格式化的热键冲突问题
  7. Fragment概念/生命周期/加载/传值 非常具体的一些案例
  8. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛题解
  9. oracle基础之sql基础知识
  10. 程序代码经典注释大全