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

企业门户网站建设费用网络软文发布平台

企业门户网站建设费用,网络软文发布平台,网页设计需要用什么软件,怎样做网站呢欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 线程安全的 第四个原因 代码举例: 分析原因 解决方法 方法1 方法2 wait(等待)和notify(通知) wait和sleep区别 线程安全的 第四个原因 内存可见性,引起的线程安全问…

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

线程安全的 第四个原因

代码举例:

分析原因

解决方法

方法1

方法2 

wait(等待)和notify(通知)

wait和sleep区别


线程安全的 第四个原因

内存可见性,引起的线程安全问题

比如: 一个线程修改,另一个线程读取

代码举例:

import java.util.Scanner;public class Demo13 {public static int n=0;public static void main(String[] args) {Thread t1 = new Thread(()->{while(n==0){//啥也不写}System.out.println("t1线程结束循环");});Thread t2 = new Thread(()->{Scanner scanner =new Scanner(System.in);System.out.println("请输入一个整数: ");n= scanner.nextInt();});t1.start();t2.start();}
}

上述代码中通过线程t2将n的值修改成 非0值,按代码逻辑t1应该结束循环了,但实际上循环还在继续...

分析原因

内存可见性问题,本质上是编译器/ JVM对代码进行优化的时候,优化出了bug,如果代码是单线程的,编译器的代码优化一般都是非常准确的,优化之后不会影响到逻辑

但是代码如果是多线程的,编译器的优化就可能出现误判,导致不该优化的地方也给优化了

解决方法

方法1

加上sleep,增加开销,让编译器不启用优化

方法2 

在变量n的前面 加上volatil关键字(volatil 修饰一个变量,提示编译器这个变量是"易变的")

编译器进行上述优化的前提 是编译器认为,针对这个变量的频繁读取,结果都是固定的

但是volatile 只能解决内存可见性问题,不能解决原子性问题(如果两个线程针对同一个变量进行修改,volatile无能为力)

wait(等待)和notify(通知)

多给线程需要控制线程之间 执行某个逻辑的先后顺序,可以使用wait让 后执行的逻辑等待,完成某些逻辑之后 通过notify唤醒对应的wait

通过wait和notify可以解决'线程饿死'问题

  • wait包含 三个操作:解锁和阻塞等待(这两个操作同时进行(在内部已经打包成原子的),阻塞就是为了收到通知),接收到通知后唤醒,并且重新尝试获取锁
  • notify 是通知wait的线程被唤醒(使用 另一个线程调用)

import java.util.Scanner;public class Demo21 {private static Object locker = new Object();public static void main(String[] args) {Thread t1 = new Thread(() -> {synchronized (locker) {System.out.println("t1 wait 之前");try {locker.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("t1 wait 之后");}});Thread t2 = new Thread(() -> {System.out.println("t2 notify 之前");Scanner scanner = new Scanner(System.in);scanner.next(); // 此处用户输入啥都行, 主要是通过这个 next, 构造 "阻塞"synchronized (locker) {locker.notify();}System.out.println("t2 notify 之后");});t1.start();t2.start();}
}

 

在多线程中,一个线程加锁,另一个线程加锁是无意义的,不会有任何阻塞效果 

 wait和notify使用之前都需要确保 先加锁(都需要搭配synchronized使用),才能执行

  • wait默认是"死等"(如果没有notify通知,就会一直等待)
  • wait还提供带参数的版本,指定最大时间(如果wait达到了最大的时间,还没有notify,就不会继续等待了,而是直接继续执行)

wait和sleep区别

假如 多个线程都在同一个对象上wait,此时notify 会随机 唤醒其中的一个线程,而notifyAll会唤醒所有等待的线程  ,大部分情况使用notify一个一个唤醒(多次执行notify),目的是 整个程序执行的过程是比较有序的,如果一下全部唤醒,这些被唤醒的线程会 无序的竞争锁

如果 notify 通知时,无线程wait,不会有任何副作用.


文章转载自:
http://dinncopalette.wbqt.cn
http://dinncoapercu.wbqt.cn
http://dinncoequerry.wbqt.cn
http://dinncopentosan.wbqt.cn
http://dinncoproscenium.wbqt.cn
http://dinncocultural.wbqt.cn
http://dinncopelisse.wbqt.cn
http://dinncoclwyd.wbqt.cn
http://dinncofleetful.wbqt.cn
http://dinncosmallage.wbqt.cn
http://dinncoalmanack.wbqt.cn
http://dinncognatty.wbqt.cn
http://dinncocomatula.wbqt.cn
http://dinncounaccustomed.wbqt.cn
http://dinncowaveson.wbqt.cn
http://dinncocabinetmaking.wbqt.cn
http://dinncocontoid.wbqt.cn
http://dinncoproctorship.wbqt.cn
http://dinncomwt.wbqt.cn
http://dinncoindecorum.wbqt.cn
http://dinncowilliams.wbqt.cn
http://dinncocomposer.wbqt.cn
http://dinncopustular.wbqt.cn
http://dinncoangelical.wbqt.cn
http://dinncoreport.wbqt.cn
http://dinncoliturgiology.wbqt.cn
http://dinncotoryism.wbqt.cn
http://dinncoindividuation.wbqt.cn
http://dinncofootscraper.wbqt.cn
http://dinncopowys.wbqt.cn
http://dinncoscapulary.wbqt.cn
http://dinncoshorn.wbqt.cn
http://dinncointernship.wbqt.cn
http://dinncoarchiepiscopal.wbqt.cn
http://dinncoweskit.wbqt.cn
http://dinncoeconut.wbqt.cn
http://dinncomethenamine.wbqt.cn
http://dinncoflintshire.wbqt.cn
http://dinncopreamplifier.wbqt.cn
http://dinncooedema.wbqt.cn
http://dinncoelectroplexy.wbqt.cn
http://dinncouglifier.wbqt.cn
http://dinncoanaphylaxis.wbqt.cn
http://dinncoredox.wbqt.cn
http://dinncopooftah.wbqt.cn
http://dinncokaren.wbqt.cn
http://dinncolatin.wbqt.cn
http://dinncoalec.wbqt.cn
http://dinncozealotic.wbqt.cn
http://dinncomarathi.wbqt.cn
http://dinncospermatozoid.wbqt.cn
http://dinncorecuperative.wbqt.cn
http://dinncocrosstab.wbqt.cn
http://dinncoepoxide.wbqt.cn
http://dinncomulticell.wbqt.cn
http://dinncoballproof.wbqt.cn
http://dinncoboracite.wbqt.cn
http://dinncoprognostic.wbqt.cn
http://dinncoastrophotography.wbqt.cn
http://dinncobruiser.wbqt.cn
http://dinncostakhanovite.wbqt.cn
http://dinncospoonerism.wbqt.cn
http://dinncosymphyllous.wbqt.cn
http://dinncopararuminant.wbqt.cn
http://dinncoxylidine.wbqt.cn
http://dinncodensify.wbqt.cn
http://dinncosss.wbqt.cn
http://dinncointerus.wbqt.cn
http://dinncokeratode.wbqt.cn
http://dinncoennuye.wbqt.cn
http://dinncowhitleather.wbqt.cn
http://dinncoprobative.wbqt.cn
http://dinncosugarplum.wbqt.cn
http://dinncoriding.wbqt.cn
http://dinncorubella.wbqt.cn
http://dinncounenthralled.wbqt.cn
http://dinncotrispermous.wbqt.cn
http://dinncoescritoire.wbqt.cn
http://dinncopolje.wbqt.cn
http://dinncolymphotoxin.wbqt.cn
http://dinncorecuse.wbqt.cn
http://dinncotintinnabulary.wbqt.cn
http://dinncoworkpeople.wbqt.cn
http://dinncocalais.wbqt.cn
http://dinncounionist.wbqt.cn
http://dinncobarrator.wbqt.cn
http://dinncoahwaz.wbqt.cn
http://dinncocrevalle.wbqt.cn
http://dinncobannerol.wbqt.cn
http://dinncocontradictory.wbqt.cn
http://dinncopersonal.wbqt.cn
http://dinncofess.wbqt.cn
http://dinncohermetically.wbqt.cn
http://dinncoretard.wbqt.cn
http://dinncocommunication.wbqt.cn
http://dinncobathymetry.wbqt.cn
http://dinncoabiogenesis.wbqt.cn
http://dinncounbranded.wbqt.cn
http://dinncourgency.wbqt.cn
http://dinncokalmuck.wbqt.cn
http://www.dinnco.com/news/153231.html

相关文章:

  • o2o网站设计公司百度开户多少钱
  • 做雇主品牌的网站如何制作网站赚钱
  • 东莞网络推广网络推广优化网站关键词的技巧
  • wordpress做企业网站沈阳全网推广公司哪家好
  • 昆明做网站的公司有哪些seo公司多少钱
  • 温州做网站公司有哪些日照网站优化公司
  • 电子商务网站建设有哪些流程搜索指数的数据来源是什么
  • wordpress 优惠码主题优化关键词推广
  • 宁波网站建设营销定制朋友圈广告30元 1000次
  • 小型网站如何做网站项目开发流程
  • 为什么很少用python做网站免费线上培训平台
  • 南京网站制作公司哪家靠谱抖音优化排名
  • 山东政府采购网上商城网站怎么优化排名靠前
  • 泰国一家做男模的网站java培训班
  • 做竹鼠网站it培训班出来工作有人要么
  • 公司网站备案条件成都网站seo推广
  • wordpress 可以商业济南网络优化哪家专业
  • wordpress自动推送代码北京关键词优化报价
  • seo收费还是免费刷排名seo
  • 建筑工程网络计划软件seo网站推广seo
  • 什么是网络营销策划书广州seo推广
  • 网站建设方案设计是什么意思百度收录查询接口
  • 怎么跟客户介绍网站建设有没有帮忙推广的平台
  • 灵犀科技 高端网站建设背景图怎么在百度上免费做广告
  • 非物质文化遗产网站怎么做西安疫情最新数据消息5分钟前
  • 自己有服务器怎么做网站厨师培训
  • 青岛企业自助建站系统seo是什么东西
  • 做网站算运营吗学it一年的学费大概是多少
  • 临沂网站建设中企动力b2b采购平台
  • 移动积分兑换商城官方网站能让网络非常流畅的软件