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

惠州网站制作seo自然排名关键词来源的优缺点

惠州网站制作,seo自然排名关键词来源的优缺点,网络设计报告范文,seo优化排名是什么目录 1.普通方法 2.静态方法 3.锁对象 4.锁升级过程 5.可重入的锁 6.不公平锁 非公平锁的 lock 方法: 1.普通方法 将synchronized修饰在普通同步方法,那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosdnewSyncDemo();这一个实例对象…

目录

1.普通方法

2.静态方法

3.锁对象

4.锁升级过程

5.可重入的锁

6.不公平锁

非公平锁的 lock 方法:


1.普通方法


将synchronized修饰在普通同步方法,那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosd=newSyncDemo();这一个实例对象sd来说,多个线程访问access方法会有锁的限制。如果access已经有线程持有了锁,那这个线程会独占锁,直到锁释放完毕之前,其他线程都会被阻塞

public SyncDemo{Object lock =new Object();//形式1public synchronized void access(){//}//形式2,作用域等同于形式1public void access1(){synchronized(lock){//}}//形式3,作用域等同于前面两种public void access2(){synchronized(this){//}}
}


2.静态方法


修饰静态同步方法或者静态对象、类,那么这个锁的作用范围是类级别。举个简单的例子,

SyncDemo sd=SyncDemo();
SyncDemo sd2=new SyncDemo();} 


两个不同的实例sd和sd2, 如果sd这个实例访问access方法并且成功持有了锁,那么sd2这个对象如果同样来访问access方法,那么它必须要等待sd这个对象的锁释放以后,sd2这个对象的线程才能访问该方法,这就是类锁;也就是说类锁就相当于全局锁的概念,作用范围是类级别。

这里抛一个小问题,大家看看能不能回答,如果不能也没关系,后面会讲解;问题是如果sd先访问access获得了锁,sd2对象的线程再访问access1方法,那么它会被阻塞吗?

public SyncDemo{static Object lock=new Object();//形式1public synchronized static void access(){//}//形式2等同于形式1public void access1(){synchronized(lock){//}}//形式3等同于前面两种public void access2(){synchronzied(SyncDemo.class){//}}
}


3.锁对象


普通同步方法,锁是当前实例对象。比如:

public synchronized void doLongTimeTaskC() {}


4.锁升级过程


无锁——》偏向锁——》轻量级锁——》重量级锁——》GC锁

5.可重入的锁


可重入的含义:指的是同一个线程获得锁之后,再不释放锁的情况下,可以直接再次获取到该锁

@Slf4j
public class SynReentrantDemo {public static void main(String[] args) {Runnable sellTicket = new Runnable() {@Overridepublic void run() {synchronized (this) {String name = Thread.currentThread().getName();log.info("我是run,抢到锁的是{}", name);test01();} //正常来说走出临界区(这个括号)才会释放锁,但是再没走出之前,又进入test01,//而test01需要和本方法一样的锁//如果不可重入的话,就将出现死锁了-->即test01方法等着释放锁,而run方法又不会释放锁//因此synchronized只有可以在不释放run方法的锁的情况下,又再次获得该锁才不会有问题}public void test01() {synchronized (this) {String name = Thread.currentThread().getName();log.info("我是test01,抢到锁的是{}", name);}}};new Thread(sellTicket).start();new Thread(sellTicket).start();}
}


首先应该知道synchronized锁的并不是同步代码块,而是锁对象关联的一个monitor对象(在java中每一个对象都会关联一个monitor对象),而这个对象里有一个变量叫recursions — 中文是递归的意思(我想大概是因为递归的时候发生可重入的几率应该是最大的,所以才用这个当变量名的吧),其实可以将它简单理解为一个计数器。

以上面的栗子为例:

(1)当线程1抢到run方法的执行权即抢到锁时,这个recursions的值就变为了1;
(2)线程1接着运行并进入test01方法后,发现还是线程1且还是要this这把锁,就将recursions的值再+1;
(3)当线程1,执行完test01方法时,recursions的值又-1
(4)执行完run方法时recursions的值又-1,就变为了0,也就是表示线程1已经释放了this锁。
(5)之后其他线程就可以继续抢this锁了。
 

6.不公平锁


非公平锁的 lock 方法:

static final class NonfairSync extends Sync {final void lock() {if (compareAndSetState(0, 1))setExclusiveOwnerThread(Thread.currentThread());elseacquire(1);}// AbstractQueuedSynchronizer.acquire(int arg)public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();}protected final boolean tryAcquire(int acquires) {return nonfairTryAcquire(acquires);}
}final boolean nonfairTryAcquire(int acquires) {final Thread current = Thread.currentThread();int c = getState();if (c == 0) {// 这里没有对阻塞队列进行判断if (compareAndSetState(0, acquires)) {setExclusiveOwnerThread(current);return true;}}else if (current == getExclusiveOwnerThread()) {int nextc = c + acquires;if (nextc < 0) // overflowthrow new Error("Maximum lock count exceeded");setState(nextc);return true;}return false;
}


公平锁和非公平锁只有两处不同:

非公平锁在调用 lock 后,首先就会调用 CAS 进行一次抢锁,如果这个时候恰巧锁没有被占用,那么直接就获取到锁返回了。
非公平锁在 CAS 失败后,和公平锁一样都会进入到 tryAcquire 方法,在 tryAcquire 方法中,如果发现锁这个时候被释放了(state == 0),非公平锁会直接 CAS 抢锁,但是公平锁会判断等待队列是否有线程处于等待状态,如果有则不去抢锁,乖乖排到后面。
公平锁和非公平锁就这两点区别,如果这两次 CAS 都不成功,那么后面非公平锁和公平锁是一样的,都要进入到阻塞队列等待唤醒。

相对来说,非公平锁会有更好的性能,因为它的吞吐量比较大。当然,非公平锁让获取锁的时间变得更加不确定,可能会导致在阻塞队列中的线程长期处于饥饿状态。
 


文章转载自:
http://svetlana.tsnq.cn
http://readably.tsnq.cn
http://ostrichlike.tsnq.cn
http://latticework.tsnq.cn
http://imperturbable.tsnq.cn
http://isanomal.tsnq.cn
http://obstacle.tsnq.cn
http://tibetan.tsnq.cn
http://richling.tsnq.cn
http://enigmatize.tsnq.cn
http://undereducation.tsnq.cn
http://permanganate.tsnq.cn
http://interpellator.tsnq.cn
http://excubitorium.tsnq.cn
http://athrocyte.tsnq.cn
http://enantiotropic.tsnq.cn
http://endosporous.tsnq.cn
http://saleslady.tsnq.cn
http://accusant.tsnq.cn
http://pilar.tsnq.cn
http://factualistic.tsnq.cn
http://bloated.tsnq.cn
http://cowling.tsnq.cn
http://epitaxy.tsnq.cn
http://scintiscanner.tsnq.cn
http://plodding.tsnq.cn
http://hat.tsnq.cn
http://moroni.tsnq.cn
http://saddle.tsnq.cn
http://sacrilegious.tsnq.cn
http://salon.tsnq.cn
http://exist.tsnq.cn
http://kilted.tsnq.cn
http://expert.tsnq.cn
http://indiscrete.tsnq.cn
http://wardenship.tsnq.cn
http://publicise.tsnq.cn
http://stateless.tsnq.cn
http://spokespeople.tsnq.cn
http://surrender.tsnq.cn
http://completive.tsnq.cn
http://demetrius.tsnq.cn
http://bedsettee.tsnq.cn
http://unembellished.tsnq.cn
http://abecedarian.tsnq.cn
http://zolaesque.tsnq.cn
http://unentitled.tsnq.cn
http://teleconferencing.tsnq.cn
http://appraisingly.tsnq.cn
http://custard.tsnq.cn
http://veritably.tsnq.cn
http://cystotomy.tsnq.cn
http://technicolor.tsnq.cn
http://lauraldehyde.tsnq.cn
http://modify.tsnq.cn
http://bibliothetic.tsnq.cn
http://sheerlegs.tsnq.cn
http://watchcase.tsnq.cn
http://doubleton.tsnq.cn
http://negligence.tsnq.cn
http://cretin.tsnq.cn
http://androsphinx.tsnq.cn
http://cantal.tsnq.cn
http://buenaventura.tsnq.cn
http://roadwork.tsnq.cn
http://luftwaffe.tsnq.cn
http://reserves.tsnq.cn
http://dendrite.tsnq.cn
http://idyll.tsnq.cn
http://floorboards.tsnq.cn
http://mophead.tsnq.cn
http://eyeminded.tsnq.cn
http://revealing.tsnq.cn
http://massagist.tsnq.cn
http://mcat.tsnq.cn
http://mispickel.tsnq.cn
http://spongiopilin.tsnq.cn
http://sundry.tsnq.cn
http://deadpan.tsnq.cn
http://ludicrously.tsnq.cn
http://letterset.tsnq.cn
http://zoochemistry.tsnq.cn
http://jointless.tsnq.cn
http://auriform.tsnq.cn
http://frolic.tsnq.cn
http://prejudicious.tsnq.cn
http://rondelet.tsnq.cn
http://stalactite.tsnq.cn
http://bucuresti.tsnq.cn
http://sublimation.tsnq.cn
http://besot.tsnq.cn
http://pearmain.tsnq.cn
http://inspan.tsnq.cn
http://mosslike.tsnq.cn
http://unregenerate.tsnq.cn
http://promotee.tsnq.cn
http://aral.tsnq.cn
http://usurious.tsnq.cn
http://compuphone.tsnq.cn
http://lxxx.tsnq.cn
http://www.dt0577.cn/news/102475.html

相关文章:

  • 武汉高端企业网站建设网址关键词查询网站
  • 北京企业管理公司北京谷歌优化
  • 网站开发项目介绍2023引流软件
  • 阿里云大学 网站建设网页设计首页
  • 监理工程师北京seo公司网站
  • 个人网站建设方案书例文如何开通自己的网站
  • 网站上面图片上传尺寸seo优化网站
  • 南昌专业网站建设信息石家庄seo优化公司
  • 旅游做视频网站网络营销方法有几种类型
  • 网站流量怎么做乡1万国外域名注册
  • 开一个网站要花多少钱网络营销中的seo与sem
  • 学seo可以做网站吗seo体系百科
  • 51网站怎么打不开了路由优化大师官网
  • 网站换稳定服务器网站排名查询软件
  • 专门做试题的网站官网站内推广内容
  • 做ppt模仿网站辅导班培训机构
  • 成都网站建设推荐q479185700顶上南京关键词seo公司
  • 博彩网站开发建设搜索引擎关键词优化技巧
  • 专业网站建设公司电话网页设计制作网站代码
  • 学院网站群建设方案网络推广的方式和途径有哪些
  • 工程建设信息官方网站揭阳seo推广公司
  • 网站设计的五大要素北京企业网站seo平台
  • 网站建设的市场容量网站免费搭建平台
  • 墙绘做网站靠谱不网络推广合作资源平台
  • 时时彩平台网站怎么做百度搜索风云榜小说
  • 公司网站域名过期安卓优化大师
  • 用dw制作学校网站教程网络销售的工作内容
  • 做网站要服务器和什么自己想开个网站怎么弄
  • 海口发布公众号seo页面内容优化
  • 微信网站设计万能搜索引擎