首页 > 其他分享 >线程同步(同步代码块 )

线程同步(同步代码块 )

时间:2022-11-29 18:45:55浏览次数:49  
标签:同步 对象 代码 安全 加锁 线程

线程同步:为了解决线程安全问题。

1、取钱案例出现问题的原因?
多个线程同时执行,发现账户都是够钱的。

2、如何才能保证线程安全呢?
让多个线程实现先后依次访问共享资源,这样就解决了安全问题

线程同步的核心思想
加锁,把共享资源进行上锁,每次只能一个线程进入访问完毕以后解锁,然后其他线程才能进来。

线程同步解决安全问题的思想是什么?
加锁:让多个线程实现先后依次访问共享资源,这样就解决了安全问题。

同步代码块
作用:把出现线程安全问题的核心代码给上锁。
原理:每次只能一个线程进入,执行完毕后自动解锁,其他线程才可以进来执行。

synchronized(同步锁对象) {

操作共享资源的代码(核心代码)

}

锁对象要求
理论上:锁对象只要对于当前同时执行的线程来说是同一个对象即可。

锁对象用任意唯一的对象好不好呢?
不好,会影响其他无关线程的执行。
锁对象的规范要求
规范上:建议使用共享资源作为锁对象。
对于实例方法建议使用this作为锁对象。
对于静态方法建议使用字节码(类名.class)对象作为锁对象

同步代码块是如何实现线程安全的?
对出现问题的核心代码使用synchronized进行加锁
每次只能一个线程占锁进入访问

. 同步代码块的同步锁对象有什么要求?
对于实例方法建议使用this作为锁对象。
对于静态方法建议使用字节码(类名.class)对象作为锁对象。

 

标签:同步,对象,代码,安全,加锁,线程
From: https://www.cnblogs.com/popopopopo/p/16936228.html

相关文章

  • QT程序新建一个线程
    1、创建好一个QT应用程序2、手动创建新线程类,继承QThread我这里新建的是下面newthread.h和newthread.cpp文件。newthread.h#ifndefNEWTHREAD_H#define......
  • 代码随想录算法训练营第十四天 | 理论基础 递归遍历 迭代遍历 统一迭代
    今日内容:●理论基础●递归遍历●迭代遍历●统一迭代详细布置理论基础需要了解二叉树的种类,存储方式,遍历方式以及二叉树的定义文章讲解:https://pro......
  • java多线程模型
    一、线程状态:  新建状态(New):新创建了一个线程对象。就绪状态(可执行状态,Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,......
  • c# 智能升级程序代码(1)
    最近单位开发一个项目,其中需要用到自动升级功能。因为自动升级是一个比较常用的功能,可能会在很多程序中用到,于是,我就想写一个自动升级的组件,在应用程序中,只需要引用这个自动......
  • Higress 实战:30 行代码写一个 Wasm Go插件
    作者:澄潭、如葑前言在11月15号的直播《Higress开源背后的发展历程和上手Demo演示》中,为大家演示了Higress的Wasm插件如何面向Ingress资源进行配置生效,本......
  • 【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看
    有读者跟我说,喜欢看我的文章,说很容易读,我确实在易读性上花费的心思不亚于在内容上。因为我不喜欢一上来就堆很多东西,而且把简单的东西搞得复杂人人都会,但是把复杂的东西讲......
  • 《代码大全2》阅读笔记六——代码改善
    今天我阅读了《代码大全2》这本书里面的代码改善的部分,学习了如何有效地改善代码.软件同时拥有外在的和内在的质量特性。外在体现为:正确性可用性效率可靠性完整性......
  • 多线程的创建(继承Thread类)
    多线程的创建方式一:继承Thread类Java是通过java.lang.Thread类来代表线程的。按照面向对象的思想,Thread类应该提供了实现多线程的方式。步骤:定义一个子类MyThread继承......
  • 用于拖拽放置的前端代码
    用于拖拽放置的前端代码<!DOCTYPEhtml><html><head><metacharset="utf-8"> <metaname="viewport"content="width=device-width,initial-scale=1,maximum-sca......
  • visual studio 2017 使用码云gitee进行源代码管理
    在码云新建项目  复制项目地址  visualstudio 操作  新建项目 提交到码云 https://blog.csdn.net/sekone/article/details/82619934?ops_req......