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

网站建设与规划结课论文成都网站建设q479185700棒

网站建设与规划结课论文,成都网站建设q479185700棒,网站怎么申请微信支付,微博seo营销首先要知道什么是线程安全#xff1f; 当多个线程访问某个类时#xff0c;不管运行环境采用何种调度方式或者这些线程将如何交替执行#xff0c;并且在主调代码中不需要任何额外的同步或协同#xff0c;这个类都能表现出正确的行为#xff0c;那么就称这个类是线程安全的。…首先要知道什么是线程安全   当多个线程访问某个类时不管运行环境采用何种调度方式或者这些线程将如何交替执行并且在主调代码中不需要任何额外的同步或协同这个类都能表现出正确的行为那么就称这个类是线程安全的。 典型线程不安全的列子 1 import java.util.*;4 5 class Worker implements Runnable {6 private UnsafeCount unsafeCount;7 8 public Worker(UnsafeCount unsafeCount) {9 this.unsafeCount unsafeCount; 10 } 11 12 Override 13 public void run() { 14 // TODO Auto-generated method stub 15 for (int i 0; i 1000; i) 16 unsafeCount.increase(); 17 } 18 19 } 20 21 public class UnsafeCount { 22 private int count 0; 23 24 public void increase() { 25 count; 26 } 27 28 public int getCount() { 29 return count; 30 } 31 32 public static void main(String[] args) throws InterruptedException { 33 UnsafeCount uc new UnsafeCount(); 34 35 //这里用了list简陋的方式控制线程的结束更好的实现是用闭锁CountDownLatch或者栅栏CyclicBarrier 36 ListThread list new ArrayListThread();// 37 38 for (int i 0; i 10; i) { 39 Thread worker new Thread(new Worker(uc)); 40 worker.start(); 41 list.add(worker); 42 } 43 44 //阻塞直到线程结束 45 for (Thread t : list) { 46 t.join(); 47 } 48 49 System.out.println(total is: uc.getCount()); 50 51 } 52 } 运行结果每次结果都不一样total is: 7628   我们来仔细分析一下这个结果开启10个线程运行每个线程都对count进行了1000次自增操作期望的结果应该是1000*1010000。很明显运行结果与期望结果不一致。结论是这个类是线程不安全的。为什么会出现这种情况了 原因是count这个操作不是原子性其实这个自增操作是个复合操作读-改-写。 如果我们了解汇编语言的话对应自增操作的汇编程序可能是 movl count, %eax  #将count的值读入eax的寄存器中, inc %eax  #寄存器eax里的值加1即改写count值 movl %eax, %ebx  #这里ebx寄存器存存放着count的内存地址这里是值将改写的count值写入到内存中 那么这样就存在一个问题假如就存在2个线程A和B操作变量count初始化时刻count为0. 在线程A未写入改写值之前比如在A线程执行步骤2的时刻 线程B开始执行如下所示   线程A读入count值为0 步骤1  -》  改写count值为1步骤2  -》 将改写后的count值写入内存中步骤3                       线程A读入count值为0 步骤1  -》  改写count值为1步骤2  -》 将改写后的count值写入内存中步骤3   因为线程A还没有更新改写count的值到内存这时线程B读入count的值仍旧是0导致最后2个线程结束后count的值为1。由此可见做了2次自增的操作期望结果是2但实际结果可能是1.这也是线程不安全的情况下自增的操作的实际结果往往比期望结果小的原因。   下篇准备将讲什么情况是线程不安全的。             转载于:https://www.cnblogs.com/csu_xajy/p/4237489.html
http://www.zqtcl.cn/news/854628/

相关文章:

  • 徐州整站优化手机网页端
  • 深圳中瑞建设集团官方网站宁波seo快速优化教程
  • 福田网站制作哪家好昆山企业网站建设公司
  • wordpress快六安网站自然排名优化价格
  • 网站的线下推广怎么做的系统官网网站模板下载安装
  • 北京网站优化推广公司企业网站建设费怎么核算
  • 网站建设vps个人如何做网站推广
  • 小语种网站怎么设计网页制作公司 大连
  • 贵港市城乡住房建设厅网站菜鸟教程网站
  • 广州网站建设找哪家免费搭建网站的软件
  • 培训班管理系统 免费太原优化网站排名
  • 上海怎么做网站网站让图片充满屏幕怎么做
  • 哈尔滨营销网站建设wordpress 加载图片不显示
  • 电商网站功能结构图网站做中秋专题怎么弄
  • 深圳专业建站平台陕西省建设工程质量安全监督总站网站
  • 制作网页的网站的软件是用户反馈数据分析软件园
  • 南京 做网站seo查询网站
  • 卖高仿名牌手表网站共享wifi小程序搭建
  • c#网站开发模板想在意大利做购物网站
  • 2015做那些网站能致富60天做网站
  • 沈阳个人建站模板网站图片计时器怎么做
  • 福州定制网站开发北京排名seo
  • 地方门户网站开发方案长沙有哪个学校可以学网站建设
  • 建个购物网站水果建设网站前的市场分析
  • 建网站的目的小程序登录代码
  • 南京有名的网站建设公司自学室内装修设计教程
  • 新乡市做网站的公司开发公司简介企业介绍
  • 礼品网站模板淘宝店铺购买交易平台
  • 属于公司的网站怎么做外贸服装网站开发
  • 做暧网站泸州公司做网站