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

公司网页设计代码网站运营之怎样做好seo优化

公司网页设计代码,网站运营之怎样做好seo优化,网络营销的概念是谁提出来的,怎么注销建设银行网站用户Volatile 作用:保证变量的可见性,有序性(禁止指令重排序)。不保证原子性。 如何保证可见性的? 场景:每个 线程 下都有一块 工作内存。要使用变量需要从 主内存 中把 变量 读取出来,使用完成后写…

Volatile

作用:保证变量的可见性,有序性(禁止指令重排序)。不保证原子性。

如何保证可见性的?

场景:每个 线程 下都有一块 工作内存。要使用变量需要从 主内存 中把 变量 读取出来,使用完成后写入到主内存。如果这个时候在 工作内存 中修改,还没有来得及写入 主内存,其他的线程从主内存中读取又读取到旧的数据了,那么这个时候就是不可见的。

Volatile 是如何做的?

原理:

  • 当对 volatile 变量进行 写操作 的时候,会立马将工作内存中的值写入到主内存中。
  • 当对 volatile 变量进行 读操作 的时候,会将工作线程内的变量值置为无效,然后重新从主内存中获取。

image-20240827235947300

禁止指令重排序

指令重排序 通常指的是 编译器运行时环境 对程序代码中指令的顺序进行调整。

这个是编译时 Jvm 对代码的一个优化,他认为这部分命令重新排序后执行效率会更高。

多核 CPU 也会对指令进行重排序以实现更好的并行处理。

volatile 作用:表示该变量的操作禁止重排序这种优化。使得指令可以按照编码顺序执行,避免在并行情况下的逻辑紊乱。

样例

public class VolatileDemo {private static  boolean flag = true;public static void main(String[] args) throws InterruptedException {new Thread(() -> {System.out.println("Start");while (flag) {}System.out.println("End");}).start();// 休眠一秒TimeUnit.SECONDS.sleep(1);flag = false;}
}

image-20240828001013953

程序一直没有结束,这就是主线程修改后其他线程不可见导致的。

加下 volatile 关键字后,能够正常结束了。

    private static volatile boolean flag = true;

image-20240828001002576

不加 Volatile 就不能保证可见性吗?

答案:不是!!!

还有那些情况可以让变量可见呢?

synchronized 互斥锁

原理:在获得互斥锁之后,会清除工作内存,重新从主内存中获取值到工作内存中,使用完成后将工作内存的值写到主内存,释放互斥锁。

修改样例

// 去掉 volatile
private static  boolean flag = true;public static void main(String[] args) throws InterruptedException {new Thread(() -> {System.out.println("Start");while (flag) {// 增加打印日志System.out.println(flag);}System.out.println("End");}).start();TimeUnit.SECONDS.sleep(1);flag = false;
}

image-20240828001855814

这样也能正常结束了。这是因为 System.out.println() 内部使用了 synchronized 关键字。

Sleep 休眠

让线程休眠触发 cpu 切换线程的机制,这样不可见的线程再重新唤醒后会重新从主内存中读取值

public static void main(String[] args) throws InterruptedException {new Thread(() -> {System.out.println("Start");while (flag) {try {// 让不可见的线程休眠一下,cpu唤醒后会重新从主内存中读取值Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}System.out.println("End");}).start();TimeUnit.SECONDS.sleep(1);flag = false;
}

image-20240828002440759

http://www.yayakq.cn/news/382619/

相关文章:

  • 做国际网站找阿里中铁建设集团有限公司什么级别
  • 电子商务平台网站建造网页设计作业古诗
  • 新网站如何做免费推广小户型装修效果图
  • 做快递网站难吗有创意的域名
  • 凡科 360免费建站给我一个网站贴吧
  • 用什么软件写网站win7下使用wordpress
  • 微动网站建设制作投票链接哪家好厂商
  • 网盘爬虫源码是做网站来用的唐山哪里做网站
  • h5建站工具关键词林俊杰无损下载
  • 一个网站用几个域名html网站开发视频
  • 海拉尔网站设计wordpress设置手机浏览
  • 咸阳网站制作在线网站做情侣头像
  • 英文网站建设目的网页设计总结论文
  • 网站开发知识点总结怎么查看网站开发语言
  • 抓取工具把对手网站的长尾词自己创建外贸公司
  • 黄山建设网站公司电话长春网络营销公司
  • 定制家具网站建设怎么制作app平台
  • 做网站运营难吗桂林象鼻山门票多少钱
  • 淄博网络科技有限公司关键词优化哪家强
  • 网站模版网 下载做牛津布面料在哪个网站找客户
  • 工商年检在哪个网站做哈尔滨网站优化对策
  • 医疗网站建设教程室内设计专业就业方向
  • 长春火车站附近美食动画制作软件下载安装
  • 外贸网站导航栏建设技巧简约型网站设计
  • 虹口区建设工程管理网站深圳找人做网站
  • 网页模板哪个网站可以下载做网站的价格贵吗
  • 昆明网站开发推广公司南京电子商务网站建设
  • 吉林市城市建设档案馆官方网站文章分享网站模版
  • 建设工程信息化考试报名网站成都学校网站建设公司
  • wordpress地址和站点地址有什么用免费做试卷的网站