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

山东省住房和城乡建设厅注册中心网站linux一键安装wordpress

山东省住房和城乡建设厅注册中心网站,linux一键安装wordpress,推广计划可以按照()等方法进行搭建,wordpress更换端口本文通过学习#xff1a;周阳老师-尚硅谷Java大厂面试题第二季 总结的volatile相关的笔记volatile是Java虚拟机提供的轻量级的同步机制#xff0c;三大特性为#xff1a;保证可见性、不保证原子性、禁止指令重排一、保证可见性import java.util.concurrent.TimeUnit;class M…本文通过学习周阳老师-尚硅谷Java大厂面试题第二季 总结的volatile相关的笔记volatile是Java虚拟机提供的轻量级的同步机制三大特性为保证可见性、不保证原子性、禁止指令重排一、保证可见性import java.util.concurrent.TimeUnit;class MyData {//主物理内存volatile int number 0;public void addTo60() {this.number 60;} }public class VolatileDemo {public static void main(String args []) {MyData myData new MyData();new Thread(() - {System.out.println(Thread.currentThread().getName() \t come in);try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}myData.addTo60();System.out.println(Thread.currentThread().getName() \t update number value: myData.number);}, AAA).start();while(myData.number 0) {}//说明AAA线程在睡眠3秒后更新的number的值重新写入到主内存并被main线程感知到了System.out.println(Thread.currentThread().getName() \t mission is over);} } /*** AAA come in* AAA update number value:60* main mission is over //若number0没被volatile修饰则这句不打印*/二、不保证原子性1、代码示例import java.util.concurrent.TimeUnit;class MyData {volatile int number 0;public void addPlusPlus() {number ;} }public class VolatileDemo {public static void main(String args []) {MyData myData new MyData();for (int i 0; i 20; i) {new Thread(() - {for (int j 0; j 1000; j) {myData.addPlusPlus();}}, String.valueOf(i)).start();}// 需要等待上面20个线程都计算完成后在用main线程取得最终的结果值// 这里判断线程数是否大于2为什么是2因为默认是有两个线程的一个main线程一个gc线程while(Thread.activeCount() 2) {Thread.yield();//yield表示不执行}// 最终输出的值应该20*100020000System.out.println(Thread.currentThread().getName() \t finally number value: myData.number);//19504} }2、数值丢失的原因线程1和2同时修改各自工作空间中的内容因为可见性需要重写入内存但线程1在写入的时候线程2也同时写入导致线程1的写入操作被挂起导致线程2先写线程1后写线程1的值覆盖了线程2的值因此数据丢失。n这条命令被拆分成了3个指令-getfield 从主内存拿到原始n-iadd 进行加1操作-putfileld 把累加后的值写回主内存假如三个线程同时通过getfield命令拿到主存中的n值然后三个线程各自在自己的工作内存中进行加1操作但他们并发进行 iadd 命令的时候因为只能一个进行写所以其它操作会被挂起假设1线程先进行了写操作在写完后volatile的可见性应该需要告诉其它两个线程主内存的值已经被修改了但是因为太快了其它两个线程陆续执行 iadd命令进行写入操作这就造成了其他线程没有接受到主内存n的改变从而覆盖了原来的值出现写丢失这样也就让最终的结果少于2003、解决办法(synchronized / AtomicInteger) public synchronized void addPlusPlus() { number ; } AtomicInteger atomicInteger new AtomicInteger(); public void addAtomic() { atomicInteger.getAndIncrement(); }三、禁止指令重排指令重排的代码示例public class ResortSeqDemo { int a 0; boolean flag false; public void method01() { a 1; flag true; } public void method02() { if(flag) { a a 5; System.out.println(reValue: a); } }}【顺序执行】a1flagtrueaa5 顺序执行打印reValue:6【指令重排】flagtrueaa5 打印reValue:5a1四、应用-单例模式方法1. synchronized方法2. 禁用指令重排 DCL双端检锁DCL Double Check Lock 双端检锁机制public class SingletonDemo {private static volatile SingletonDemo instance null;private SingletonDemo() {System.out.println(Thread.currentThread().getName() \t 我是构造方法SingletonDemo);}public static SingletonDemo getInstance() {if(instance null) {synchronized (SingletonDemo.class) {if(instance null) {instance new SingletonDemo();}}}return instance;}public static void main(String[] args) {for (int i 0; i 10; i) {new Thread(() - {SingletonDemo.getInstance();}, String.valueOf(i)).start();}} } /* * 0 我是构造方法SingletonDemo */原因是在某一个线程执行到第一次检测的时候读取到 instance 不为nullinstance的引用对象可能没有完成实例化。因为 instance new SingletonDemo()可以分为以下三步进行完成memory allocate(); // 1、分配对象内存空间instance(memory); // 2、初始化对象instance memory; // 3、设置instance指向刚刚分配的内存地址此时instance ! null但是我们通过上面的三个步骤能够发现步骤2 和 步骤3之间不存在 数据依赖关系而且无论重排前 还是重排后程序的执行结果在单线程中并没有改变因此这种重排优化是允许的。memory allocate(); // 1、分配对象内存空间instance memory; // 3、设置instance指向刚刚分配的内存地址此时instance ! null但是对象还没有初始化完成instance(memory); // 2、初始化对象这样就会造成什么问题呢也就是当我们执行到重排后的步骤2试图获取instance的时候会得到null因为对象的初始化还没有完成而是在重排后的步骤3才完成因此执行单例模式的代码时候就会重新在创建一个instance实例指令重排只会保证串行语义的执行一致性单线程但并不会关系多线程间的语义一致性所以当一条线程访问instance不为null时由于instance实例未必已初始化完成这就造成了线程安全的问题, 因此需要引入volatile来保证出现指令重排的问题从而保证单例模式的线程安全性。
http://www.dnsts.com.cn/news/39320.html

相关文章:

  • 深圳网站设计公司费用是北京搜狗建网站的电话
  • 钓鱼网站的危害开个平台需要多少钱
  • 广州品牌网站设计价格企业营销网站服务器1g够
  • 做网站从哪里找货源重庆最新宣传片
  • 青岛网站建设服务中心wordpress转换tpecho
  • 紫色风格网站express 网站开发
  • 美橙建站之星怎么样网站开发都用什么
  • 网站推广策划方案毕业设计WordPress的jquery
  • seo在线培训机构排名长沙seo优化服务
  • 网站建设的需求文档虚拟主机技术
  • 望野千枝叶seo推广的方法
  • wordpress博客整站源码怎么做网站超市
  • 网站建设规划书模板中国小康建设网是骗子网站吗?
  • 用fullpage做的网站建筑模型设计网站建设
  • 免费下载软件的网站wordpress弹出公告
  • 建设部总监继续教育网站网站建设夬金手指排名壹柒
  • 做网站学哪种代码好wordpress 百度云图安装
  • 嘉定华亭网站建设商业网站设计与制作
  • 查询网站流量的网址网站建设主要营销内客
  • 微信 html5 网站wordpress后台上不去
  • 什么网站做玩具的比较多网站建设的付款方式
  • wordpress如何防止被采集网站seo啥意思怎么做
  • wordpress ajax 文件做移动网站优化软
  • 苏州外贸网站公众号怎么做微网站
  • 营销类型的公司网站中国建设银行网站企业
  • app 游戏网站建设咸阳做网站xymokj
  • 基本原理网站建设有没有一种网站做拍卖厂的
  • 如何做学校网站app百度权重等级
  • 网站中客户的权限设置上传的网站打不开怎么办
  • 美乐乐网站源码深圳品牌策划公司排行榜