关于synchronized关键字:
一句话说出Synchronized的作用
能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。
Synchronized的地位

  • Synchronized是Java的一个关键字
  • 是最基本的互斥同步的手段
  • 是并发编程中的元老级角色,是并发编程的必学内容

Synchronized的两种用法介绍
对象锁,包括方法锁(默认锁对象为this当前实例对象)和同步代码块锁(自己指定锁对象)。
类锁,指synchronized修饰静态的方法或指定锁为Class对象。

第一个用法:对象锁
代码块锁
代码块形式:手动指定锁对象
锁对象的选取:若不特定锁对象,可以用this(当前对象)作为我们的锁。

例子如下:

Object的对象o放在堆里的,在堆上加了锁,当有线程访问这个对象,并想执行最后两个语句时,应该首先要拿到这个锁,然后进行访问,当第二个线程过来想拿锁的时候,应该是第一个线程执行完之后,把锁释放。锁的互斥。


方法锁形式

synchronized修饰普通方法(非静态方法),锁对象默认为this


这两种是一样的,锁定的是this对象,不是锁定整段代码。
synchronized锁定是一个对象,而不是代码块。

第二个用法:类锁
类锁的概念
概念:Java类可能有很多对象,但只有一个Class对象
本质:所谓的类锁,就是Class对象的锁
用法和效果:类锁在同一时刻只能被一个对象拥有
形式一:synchronized加在static方法上
形式二:synchronized(*.class)代码块


这里写synchronized(this)是不可以,静态的属性和方法是不需要new出对象进行访问的


是new了一个对象,多个线程一起访问这个对象


5个线程可能会出现线程重复的问题。这个时候是没有锁的,可能存在一个线程还没有访问完,另外一个线程又来了。

加上锁,上述问题就不存在了。加上synchronized之后,这个代码块是原子操作,不可分的。

高并发01_synchronized相关推荐

  1. 【分布式架构】“高并发” -- 详解

    一.什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求. 高并发相关常用的一些指标有 1响应时 ...

  2. php设置backlog,高并发调优backlog多大合适?

    么对于nginx,对于php-fpm,backlog应该设置多大,是越大越好吗?backlog怎么设置合适?这是上篇文章中遗留的几个问题 接着上篇文章Nginx高并发调优中常被忽略的参数中,最后部分, ...

  3. java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类

    是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...

  4. mongodb线程池_常用高并发网络线程模型设计及MongoDB线程模型优化实践

    服务端通常需要支持高并发业务访问,如何设计优秀的服务端网络IO工作线程/进程模型对业务的高并发访问需求起着至关重要的核心作用. 本文总结了了不同场景下的多种网络IO线程/进程模型,并给出了各种模型的优 ...

  5. 高并发系统搭建:web负载均衡

    高并发系统搭建:web负载均衡 所谓的负载均衡就是让多个请求尽量均衡的分配到不同的机器上面去 1. HTTP负载均衡 当用户的请求发来之后,web服务器通过修改HTTP响应报头中的Location标记 ...

  6. 大型技术网站的技术( 高并发、大数据、高可用、分布式....)(一)

    面对高并发.大流量.高可用.海量数据.用户分布广泛.网络情况复杂这类网站系统我们如何应对??? 第一阶段   一台服务器不行就上多台服务器    1.应用程序与数据服务分离        将应用程序. ...

  7. 高并发大型网站架构设计

    一个大型的网站网站应该由如下6个子系统组成 负载均衡系统 反向代理系统 Web服务器系统 分布式存储系统 底层服务系统 数据库集群系统 为什么要做高并发系统设计? 事实上,针对于任何单一的网络服务器程 ...

  8. Linux下高并发socket最大连接数所受的各种限制

    修改最大打开文件数 # ulimit -n 修改最大进程数 # ulimit -u ------------------------------------------------------ Lin ...

  9. 说说大型高并发高负载网站的系统架构【转】

    我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大 ...

最新文章

  1. 第一个Servlet和Jsp
  2. POJ 3180 Tarjan
  3. 解决eclipse报PermGen space异常的问题
  4. Cassandra 总接归纳
  5. SVN switch 用法详解 (ZZ)
  6. 在python中、对于函数定义代码的理解_python中如何理解装饰器代码?
  7. python读取idx_使用groupby和transform获取idxmaxp
  8. [QT]文件夹过滤问题
  9. 计算机专业老师新学期工作计划,2020教师新学期工作计划5篇
  10. Vuforia SDK导入问题Vuforia.UnityExtensions Consider removing one of the references or sign the assembl
  11. 张一鸣应该接过张近东的枪
  12. 国产蓝牙耳机哪款值得入手?高性价比游戏低延迟蓝牙耳机推荐
  13. #一首国庆生活写照#
  14. 私域流量运营平台有哪些?
  15. springboot基于JAVA游戏周边商城设计与实现毕业设计源码261622
  16. 关于C++ STL中的upper_bound()
  17. Katalon自动化测试
  18. 盘点CDEC 2019七宗最:创新与使命
  19. 规范化、标准化、归一化、正则化
  20. mysql from 嵌套查询_MySQL-10(where /from 嵌套查询)

热门文章

  1. 【转】跨DLLnew delete问题
  2. CLR类型设计之属性
  3. 《精益软件度量——实践者的观察与思考》—第1章1.1节精益软件开发的度量体系...
  4. Chapter 1 First Sight——12
  5. [HDU]2089不要62
  6. hdu 4501(三维背包问题)
  7. hihocoder 1122 : 二分图二•二分图最大匹配之匈牙利算法
  8. poj - 2356 Find a multiple
  9. 数据结构(严蔚敏)之五——循环队列(c语言实现)
  10. Python元组tuple(不可变)