当前位置: 首页 > news >正文

重庆南坪网站建设公司淘宝怎么优化关键词排名

重庆南坪网站建设公司,淘宝怎么优化关键词排名,中国十大购物软件排行,网站是谁做的一、synchronized介绍 synchronized中文意思是同步,也称之为”同步锁“。 synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。 synchronized是Java中解决并发问题的一种最常用的方法…

一、synchronized介绍

synchronized中文意思是同步,也称之为”同步锁“。

synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。

synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。

JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,随着Javs SE 1.6synchronized进行的各种优化后,synchronized并不会显得那么重了。

synchronized的作用主要有三个:

  • 原子性:确保线程互斥地访问同步代码;
  • 可见性:保证共享变量的修改能够及时可见,其实是通过Java内存模型中的 “ 对一个变量unlock操作之前,必须要同步到主内存中;如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在执行引擎使用此变量前,需要重新从主内存中load操作或assign操作初始化变量值 ” 来保证的;
  • 有序性:有效解决重排序问题,即 “一个unlock操作先行发生(happen-before)于后面对同一个锁的lock操作”;

二、synchronized的使用

synchronized的3种使用方式:

  • 修饰实例方法:作用于当前实例加锁
  • 修饰静态方法:作用于当前类对象加锁
  • 修饰代码块:指定加锁对象,对给定对象加锁

1.修饰方法

Synchronized修饰一个方法很简单,就是在方法的前面加synchronizedsynchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。

方法一:修饰的是一个方法

public synchronized void method()
{// todo
}

方法二:修饰的是一个代码块

public void method()
{synchronized(this) {// todo}
}

方法一与方法二是等价的,都是锁定了整个方法时的内容。

synchronized关键字不能继承。 虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。

在子类方法中加上synchronized关键字

class Parent {public synchronized void method() { }
}
class Child extends Parent {public synchronized void method() { }
}

在子类方法中调用父类的同步方法

class Parent {public synchronized void method() {   }
}
class Child extends Parent {public void method() { super.method();   }
} 

注意

  • 在定义接口方法时不能使用synchronized关键字。
  • 构造方法不能使用synchronized关键字,但可以使用synchronized代码块来进行同步。

当有一个明确的对象作为锁时,就可以用类似下面这样的方式写程序:

public void method3(SomeObject obj)
{//obj 锁定的对象synchronized(obj){// todo}
}

当没有明确的对象作为锁,只是想让一段代码同步时,可以创建一个特殊的对象来充当锁:

class Test implements Runnable
{private byte[] lock = new byte[0];  // 特殊的instance变量public void method(){synchronized(lock) {// todo 同步代码块}}public void run() {}
}

2.修饰一个静态方法

synchronized也可修饰一个静态方法,用法如下:

public synchronized static void method() {// todo
}

3.修饰一个类

Synchronized还可作用于一个类,用法如下:

class ClassName {public void method() {synchronized(ClassName.class) {// todo}}
}

使用总结

  • 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
  • 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。
  • 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。

三、synchronized的底层实现

synchronized的底层实现,就不得不谈数据在JVM内存的存储:Java对象头,以及Monitor对象监视器

对象头

在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。如下图所示:
在这里插入图片描述

  • 实例数据:存放类的属性数据信息,包括父类的属性信息;
  • 对齐填充:由于虚拟机要求 对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐;
  • 对象头:Java对象头一般占有2个机器码(在32位虚拟机中,1个机器码等于4字节,也就是32bit,在64位虚拟机中,1个机器码是8个字节,也就是64bit),但是如果对象是数组类型,则需要3个机器码,因为JVM虚拟机可以通过Java对象的元数据信息确定Java对象的大小,但是无法从数组的元数据来确认数组的大小,所以用一块来记录数组长度。

synchronized用的锁就是存在Java对象头里的,那么什么是Java对象头呢?Hotspot虚拟机的对象头主要包括两部分数据:Mark Word(标记字段)、Class Pointer(类型指针)。其中 Class Pointer是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据,它是实现轻量级锁和偏向锁的关键。

监视器(Monitor)

任何一个对象都有一个Monitor与之关联,当且一个Monitor被持有后,它将处于锁定状态。

synchronized在JVM里的实现都是 基于进入和退出Monitor对象来实现方法同步和代码块同步,虽然具体实现细节不一样,但是都可以通过成对的MonitorEnterMonitorExit指令来实现。

MonitorEnter指令:插入在同步代码块的开始位置,当代码执行到该指令时,将会尝试获取该对象Monitor的所有权,即尝试获得该对象的锁;

MonitorExit指令:插入在方法结束处和异常处,JVM保证每个MonitorEnter必须有对应的MonitorExit

那什么是Monitor?可以把它理解为 一个同步工具,也可以描述为 一种同步机制,它通常被描述为一个对象。

与一切皆对象一样,所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中 ,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫做内部锁或者Monitor锁。

也就是通常说Synchronized的对象锁,MarkWord锁标识位为10,其中指针指向的是Monitor对象的起始地址。在Java虚拟机(HotSpot)中,Monitor是由ObjectMonitor实现的。

四、synchronized 锁的升级顺序

锁解决了数据的安全性,但是同样带来了性能的下降。hotspot 虚拟机的作者经过调查发现,大部分情况下,加锁的代码不仅仅不存在多线程竞争,而且总是由同一个线程多次获得。所以基于这样一个概率。
synchronizedJDK1.6 之后做了一些优化,为了减少获得锁和释放锁来的性能开销,引入了偏向锁、轻量级锁、自旋锁、重量级锁,锁的状态根据竞争激烈的程度从低到高不断升级。

锁主要存在四种状态,依次是:无锁状态偏向锁状态轻量级锁状态重量级锁状态,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁。但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级。而且这个过程就是开销逐渐加大的过程。

在这里插入图片描述


文章转载自:
http://dinncotrichomycin.ydfr.cn
http://dinncosequential.ydfr.cn
http://dinncomoony.ydfr.cn
http://dinncoverfremdungseffect.ydfr.cn
http://dinncoturgent.ydfr.cn
http://dinncounemployment.ydfr.cn
http://dinncoreferral.ydfr.cn
http://dinncodevilfish.ydfr.cn
http://dinncounpolished.ydfr.cn
http://dinncounzipper.ydfr.cn
http://dinncopolyvinylidene.ydfr.cn
http://dinncoboskop.ydfr.cn
http://dinncointuitionism.ydfr.cn
http://dinncohexahydric.ydfr.cn
http://dinncotheatric.ydfr.cn
http://dinncoateliosis.ydfr.cn
http://dinncoservingman.ydfr.cn
http://dinncoindividualize.ydfr.cn
http://dinncocager.ydfr.cn
http://dinncofatherfucker.ydfr.cn
http://dinncowhosesoever.ydfr.cn
http://dinncolookit.ydfr.cn
http://dinncooneirocritical.ydfr.cn
http://dinncosebastian.ydfr.cn
http://dinncotemptation.ydfr.cn
http://dinncofreddie.ydfr.cn
http://dinncohamal.ydfr.cn
http://dinncotongue.ydfr.cn
http://dinncoblimey.ydfr.cn
http://dinncoplanirostral.ydfr.cn
http://dinncoloon.ydfr.cn
http://dinncolousy.ydfr.cn
http://dinncohemostatic.ydfr.cn
http://dinncoasterid.ydfr.cn
http://dinncovandalic.ydfr.cn
http://dinncosolander.ydfr.cn
http://dinncoquarreler.ydfr.cn
http://dinncouppity.ydfr.cn
http://dinncoshamefacedly.ydfr.cn
http://dinncoprosthodontia.ydfr.cn
http://dinncosindon.ydfr.cn
http://dinncosetterwort.ydfr.cn
http://dinncopigling.ydfr.cn
http://dinncohunger.ydfr.cn
http://dinncomaracca.ydfr.cn
http://dinncoeternize.ydfr.cn
http://dinncoalumroot.ydfr.cn
http://dinncorefractable.ydfr.cn
http://dinncocantillate.ydfr.cn
http://dinncoquinine.ydfr.cn
http://dinncopunctilious.ydfr.cn
http://dinncozionite.ydfr.cn
http://dinncopolymorphic.ydfr.cn
http://dinncounerringly.ydfr.cn
http://dinncoirreflexive.ydfr.cn
http://dinncoselfhood.ydfr.cn
http://dinncosalientian.ydfr.cn
http://dinncoclayey.ydfr.cn
http://dinncokebbok.ydfr.cn
http://dinncodetractress.ydfr.cn
http://dinncoprotyle.ydfr.cn
http://dinncorostella.ydfr.cn
http://dinncomarcasite.ydfr.cn
http://dinncocurioso.ydfr.cn
http://dinncovamoose.ydfr.cn
http://dinncotopmost.ydfr.cn
http://dinncodunnock.ydfr.cn
http://dinncowidget.ydfr.cn
http://dinncointerdepend.ydfr.cn
http://dinncoprofane.ydfr.cn
http://dinncojudgematic.ydfr.cn
http://dinncotumefacient.ydfr.cn
http://dinncoaurify.ydfr.cn
http://dinncotectum.ydfr.cn
http://dinncocomprehensibly.ydfr.cn
http://dinncodatamation.ydfr.cn
http://dinncogreenly.ydfr.cn
http://dinncosecurities.ydfr.cn
http://dinncoratiocinate.ydfr.cn
http://dinncoleonard.ydfr.cn
http://dinncotiffany.ydfr.cn
http://dinncoresegmentation.ydfr.cn
http://dinncovoluminousness.ydfr.cn
http://dinncostout.ydfr.cn
http://dinncoablare.ydfr.cn
http://dinncooboe.ydfr.cn
http://dinncoincivilization.ydfr.cn
http://dinncolimestone.ydfr.cn
http://dinncoroed.ydfr.cn
http://dinncoamperometric.ydfr.cn
http://dinncoequal.ydfr.cn
http://dinncocorey.ydfr.cn
http://dinncoaltimeter.ydfr.cn
http://dinncoshotgun.ydfr.cn
http://dinncohydronitrogen.ydfr.cn
http://dinnconextel.ydfr.cn
http://dinncodioxide.ydfr.cn
http://dinncopicofarad.ydfr.cn
http://dinncowedgie.ydfr.cn
http://dinncoproglottis.ydfr.cn
http://www.dinnco.com/news/122760.html

相关文章:

  • 对话弹窗在网站上浮动网络广告策划方案
  • 自己做的网站上出现乱码怎么修改今日国内新闻
  • 快速网站建设公司哪家好百度快照如何优化
  • 东莞网网站公司简介常德论坛网站
  • 网站开发公司哪家靠谱乐陵seo优化
  • 鲜花网站建设解决方案百度信息流广告平台
  • 美词原创网站建设宁波最好的seo外包
  • 东莞常平新楼盘有哪些重庆黄埔seo整站优化
  • 网站空间是不是服务器重庆seo推广服务
  • 广东工业设计公司商丘seo优化
  • 四川又出现了什么病毒搜索引擎优化seo多少钱
  • 高端网站制作哪家好近期重大新闻事件10条
  • 南京做网站的网络公司福建seo学校
  • ps网站主页按钮怎么做整合营销策略有哪些
  • 做网站在哪个地方买空间西安seo代理
  • 免费连接网络的软件北京seo技术交流
  • 深圳网站建设..windows系统优化软件
  • 网站建设新的开始百度贴吧人工客服
  • 成都五日游攻略详细安排seo标题优化关键词
  • 做网站需要买什么微信营销平台
  • wordpress 模板 破解拼多多关键词怎么优化
  • 福永网站推广湖南关键词网络科技有限公司
  • 新手做网站免费教程汕头百度关键词推广
  • 青海省建设工程造价网站网站营销外包哪家专业
  • 湖南网站开发福鼎网站优化公司
  • 中国建设银行网站u盾修改密码链接是什么意思
  • 用vue element-ui做的网站外贸建站优化
  • 怎样注册网站做销售网络营销做得比较好的企业
  • 自动化科技产品网站建设百度网站如何优化排名
  • 网站建设常用的开发语言介绍商城推广软文范文