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

三网合一网站远吗网店推广常用的方法

三网合一网站远吗,网店推广常用的方法,wordpress主题 免费 cms,世界500强企业排名2022文章目录与synchronized的区别保证可见性不加volatile,死循环不保证原子性禁止指令重排单例模式DCL使用到volatile与synchronized的区别 volatile是线程同步的轻量级实现,性能比synchronized好volatile只能修饰变量,synchronized可以修饰方法和代码块vo…

文章目录

  • 与synchronized的区别
  • 保证可见性
    • 不加volatile,死循环
  • 不保证原子性
  • 禁止指令重排
  • 单例模式DCL使用到volatile

与synchronized的区别

  • volatile是线程同步的轻量级实现,性能比synchronized好
  • volatile只能修饰变量,synchronized可以修饰方法和代码块
  • volatile不会发生阻塞,synchronized可能会发生阻塞
  • volatile保证数据可见性,不保证原子性,synchronized都保证
  • volatile只要用于解决变量在多个线程之间的可见性,synchronized解决的是多个线程之间访问资源的同步性

保证可见性

不加volatile,死循环

import java.util.concurrent.TimeUnit;public class VolatileDemo {int i = 0;public static void main(String[] args) {VolatileDemo volatileDemo = new VolatileDemo();new Thread(()->{try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}volatileDemo.i=100;},"a").start();while (volatileDemo.i==0){}System.out.println(volatileDemo.i);}
}

不保证原子性

public class VolatileDemo {volatile int i = 0;public static void main(String[] args) {VolatileDemo volatileDemo = new VolatileDemo();for (int i = 0; i < 20; i++) {new Thread(() -> {for (int j = 0; j < 10000; j++) {volatileDemo.i++;}}, String.valueOf(i)).start();}while (Thread.activeCount()>2){Thread.yield();}System.out.println(volatileDemo.i);}
}

在这里插入图片描述

禁止指令重排

volatile实现禁止指令重排优化,从而避免多线程环境下程序出现乱序执行的现象。

先了解一个概念,内存屏障(Memory Barrier)又称内存栅栏,是一个CPU指令,它的作用有两个:

  • 保证特定操作的执行顺序
  • 保证某些变量的内存可见性

由于编译器和处理器都能执行指令重排优化。如果在指令之间插入一条memory barrier则会告诉编译器和CPU,不管什么指令都不能和这条memory barrier指令重排,也就说通过插入内存屏障禁止在内存屏障前后的指令执行重排优化,内存屏障的另一个作用是强制刷出各种CPU的缓存数据,因此任何CPU上的线程都能读取到这些数据的最新版本。

在这里插入图片描述

单例模式DCL使用到volatile

public class SingletonDemo {private static volatile SingletonDemo instance;private SingletonDemo(){System.out.println(Thread.currentThread().getName()+"\t 构造方法");}/*** 双重检测机制* @return*/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 = 1; i <=10; i++) {new Thread(() ->{SingletonDemo.getInstance();},String.valueOf(i)).start();}}
}
http://www.wooajung.com/news/34789.html

相关文章:

  • asp门户网站源码网站制作流程是什么
  • 长春网站制作套餐合肥今天的最新消息
  • 女孩做网站运营好吗深圳外包seo
  • 网站怎么开启gzip自媒体推广
  • 什么网站可以做国外生意电子商务是干什么的
  • 网站建设与管理的通知热门搜索排行榜
  • 免费加客源做整站优化
  • 网站建设谈客户说什么手机app免费下载
  • 做竞价推广的网站要求百度店铺免费入驻
  • 网站外链可以在哪些平台上做外链珠海关键词优化软件
  • 武夷山景区网站建设优点百度怎么做推广和宣传
  • 国外对旅游网站的建设电脑速成班短期电脑培训班
  • 商城网站开发技术电子商务与网络营销题库
  • 网站正在建设中动画百度权重工具
  • 个人站长怎么做企业网站今日国际新闻摘抄
  • 网站功能性介绍广告公司的业务范围
  • 淮北论坛网官网百度seo关键词排名优化
  • 沈阳做网站优化哪家好合肥今天的最新消息
  • 网站制作的方法windows优化大师绿色版
  • 网站建设与实现的要求与务制作网页
  • 做图片类型的网站要怎么做郑州网站营销推广
  • 广州 网站建设模板旅游营销推广方案
  • 数据型网站建设b站官方推广
  • 怎么做货物收发的网站培训机构招生方案
  • 深圳高端网站开发搜索引擎优化服务
  • 做门窗做什么网站好临沂google推广
  • 河北手机版建站系统哪个好微信推广图片
  • 手机网站制作服务seort什么意思
  • 很那网站建设优化营商环境条例
  • 购物网站前台功能模块最近几天的重大新闻事件