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

百度收录检测如何优化网站标题

百度收录检测,如何优化网站标题,为自己网站建设,北京网站建设搜q.479185700Synchronized进阶1、锁升级Java 6之后对 synchronized 进行了改进,引入了锁升级机制,锁会根据线程的竞争情况进行升级。方向为 : 无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁,可以一定程度减少系统的开销。无锁:一个线程…

Synchronized进阶

1、锁升级

        Java 6之后对 synchronized 进行了改进,引入了锁升级机制,锁会根据线程的竞争情况进行升级。方向为 : 无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁,可以一定程度减少系统的开销。

无锁:一个线程没有被执行时,就会处于无锁状态。

偏向锁:当只有一个线程执行时,会从无锁升级为偏向锁。

轻量级锁:当有多个线程交替执行同步块时,会从偏向锁升级为轻量级锁。

重量级锁:当多个线程并发时,会从轻量级锁升级为重量级锁。

2、锁升级过程

2.1、无锁 ==> 偏向锁

        当只有一个线程执行时,会从无锁升级为偏向锁。会在对象头中的 Mark Word 中存入该线程的ID。此时,锁的状态为偏向锁。

2.2、偏向锁 ==> 轻量级锁

        当有多个线程交替执行同步块时,会从偏向锁升级为轻量级锁。这时在线程的栈中创建锁记录(Lock Record),并通过CAS(Compare and Swap)操作将对象头中的 Mark Word 复制到锁记录中,并将 Mark Word 执行锁记录地址。

2.3、轻量级锁 ==> 重量级锁

        当多个线程并发时,会从轻量级锁升级为重量级锁。也就是当多个线程开始竞争锁时,就要从轻量级锁升级为重量级锁。

3、锁降级

        锁降级,通常是从高级别转变到低级别的过程。一般会发生在:GC垃圾回收的过程中,JVM 会将索状态重置为无锁状态。

4、Synchronized实现原理

        synchronized实现原理主要基于对象头 Monitor (监视器)机制

4.1、对象头

        通常将锁的状态保存在对象头中,对象头主要包含两个部分:Mark WordKlass Pointer

4.1.1、Mark Word
  • 长度:32位 JVM 中占32位(4字节),64位 JVM 中占64位(8字节)
  • 作用:主要存储对象的 哈希值、GC分代年龄、锁状态 等运行时的数据。
  • 特点:Mark Word 的位布局会根据对象的锁状态动态改变。
4.1.2、Klass Pointer
  • 长度:32位 JVM 中占32位(4字节),64位 JVM 中默认开启指针压缩占32位(4字节),不开启是占64位(8字节)。
  • 作用:指向对象所属类的元数据,JVM 通过指针确定对象是那个类的实例。
  • 特点:堆内存超过32GB时自动关闭指针压缩,恢复为8字节。

4.2、Monitor (监视器)

        通常存在于线程栈的锁记录中

5、线程安全的单例模式

public class Test02 {public static void main(String[] args) {Singleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();Singleton s3 = Singleton.getInstance();System.out.println(s1.hashCode());System.out.println(s2.hashCode());System.out.println(s3.hashCode());}
}
// 线程安全的单利模式
class Singleton{// 构造函数的私有化private Singleton(){}// 静态的内部类private static class Holder{// 单例对象private static final Singleton singleton = new Singleton();}public static Singleton getInstance() {return Holder.singleton;}
}2003749087
2003749087
2003749087

ReentrantLock可重入锁

1、什么事可重入锁

        ReentrantLock是 java.util.concurrent.locks 包下的一个类,它提供了比 Synchronized 更灵活、强大的锁机制。“可重入”意味着同一线程可以多次获取同一把锁,而不会被阻塞。

2、核心方法

2.1、锁操作方法

方法签名描述
void lock()获取锁,如果锁被其他线程持有,则阻塞当前线程
void lockInterruptibly()获取锁,但允许等待时中断
boolean tryLock()尝试以非阻塞的方式获取锁
boolean trayLock(long timeout,TimeUnit unit)在指定时间内尝试获取锁
void unlock()释放锁

2.2、状态查询方法

方法签名描述
boolean isHeldByCurrentThread()查询当前线程是否持有锁
boolean isLocked()查询锁是否被任何线程持有
boolean isFair()判断锁是否为公平锁

2.3、条件变量方法

方法签名描述
Condition newCondition()创建一个与当前锁绑定的条件变量

3、使用案例

3.1、锁的基本使用

public class Test04 {public static void main(String[] args) throws InterruptedException {Counter counter = new Counter();Thread t1 = new Thread(()->{counter.add();});Thread t2 = new Thread(()->{counter.dec();});t1.start();t2.start();t1.join();t2.join();System.out.println(counter.getValue());}
}class Counter{private static int value = 0;// 创建锁对象private final ReentrantLock lock =new ReentrantLock();public static int getValue() {return value;}public void add(){lock.lock();try {for (int i =0 ;i <10000;i++){value++;}} finally {lock.unlock();}}    public  void dec(){lock.lock();try {for (int i =0 ;i <10000;i++){value--;}} finally {lock.unlock();}}
}

3.2、支持中断锁的获取

public class demo1 {public static void main(String[] args) throws InterruptedException {// 创建ReentrantLock锁对象ReentrantLock lock = new ReentrantLock();Thread t1 = new Thread(()->{try {lock.lockInterruptibly();try {System.out.println("线程任务执行!");} finally {lock.unlock();}} catch (InterruptedException e) {System.out.println("线程中断!");return;}System.out.println("子线程结束!");});t1.start();t1.interrupt();System.out.println("主线程结束!");}
}主线程结束!
线程中断!

4、synchronized和synchronized的区别

特性Synchronizedsynchronized
锁的获取与释放隐式调用,由JVM自动完成显示调用,手动调用lock()和unlock()方法
可中断性不可中断可以中断,使用lockInterruptibly()
超时机制不支持支持,使用tryLock(timeout)
公平性非公平非公平和公平都支持
条件变量单一wait/notify支持条件对象Condition
锁状态检测无法判断通过方法可以获取
锁实现机制监听器 Monitor AQS


文章转载自:

http://wCJe7w2f.cptzd.cn
http://7xUPMXM0.cptzd.cn
http://raFpdPK7.cptzd.cn
http://dKtkOlVY.cptzd.cn
http://qvxdVC4s.cptzd.cn
http://w3tc1PuG.cptzd.cn
http://bk6AGXyb.cptzd.cn
http://MAhy5aVa.cptzd.cn
http://Ipb8mFLY.cptzd.cn
http://0j86SaBA.cptzd.cn
http://QJsTB0nG.cptzd.cn
http://jwzmtzes.cptzd.cn
http://DpkILykA.cptzd.cn
http://W10NTmwa.cptzd.cn
http://uukj5A6u.cptzd.cn
http://p9tO5Loa.cptzd.cn
http://1DZ7yLyW.cptzd.cn
http://9a4IxvIi.cptzd.cn
http://5SAo6Dad.cptzd.cn
http://aJLrFulG.cptzd.cn
http://dzin4EX6.cptzd.cn
http://nuVYj4GK.cptzd.cn
http://jIWTl2CW.cptzd.cn
http://c4CurZli.cptzd.cn
http://b0zT5EVv.cptzd.cn
http://QHnSsOZK.cptzd.cn
http://eaM6WUqX.cptzd.cn
http://9cuMnbiN.cptzd.cn
http://7HzxQbH6.cptzd.cn
http://cUOdRy1D.cptzd.cn
http://www.dtcms.com/wzjs/687886.html

相关文章:

  • 网站建设中标公告如何使用云服务建设网站
  • 大连科技学院官方网站的建设与放店铺logo在线免费制作
  • 福州网站制作有限公司网站开发报价单
  • 做网站的网站赚钱吗外发加工会计分录
  • 德兴市网站建设服务公司成都seo培训班
  • 毕业设计可以做自己的网站吗住房和城乡建设岗位证书
  • 长垣做网站两学一做教育纪实评价系统网站
  • 室内装饰设计师证书seo推广营销网站
  • 安全认证的机票网站成就怎么做装修设计案例网站
  • 做asp网站教程wordpress 目录样式
  • 搭建网站要不要给域名对方wordpress 手机首页设置
  • 建设专业网站电话咨询珠海网站建设网
  • 酒店宾馆客栈旅馆古典网站源码 asp源码带后台乐清seo公司
  • 网站做外链平台有哪些免费
  • 哪个网站课件做的比较好做装修的网站有哪些内容
  • 想自己做网站该学些什么音乐资源网站开发
  • 网站没有内容 能做优化吗外贸网站推广 sit
  • 66郑州网站建设推广文案范文100字
  • 长治市住房保障和城乡建设管理局网站电子商务网站建设题6
  • 深圳集智邦是网站建设公司建设网站建设哪里好
  • 网站升级维护通知专业建设特色
  • 怎样用jsp做网站分销平台是什么意思
  • 资阳网站开发汉阴网站建设
  • 网站制作引擎seo优化网站推广
  • 新野做网站wordpress开发教程
  • 无忧企业网站系统西部数码域名网站模板
  • 延吉网站网站建设手机下载软件
  • vue 做自适应网站网站建设 维护购销合同
  • 网站安全建设经费保障简历免费模板下载
  • wordpress文学站线下推广公司