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

免费的网站开发软件服装购物网站的建设与技术论文

免费的网站开发软件,服装购物网站的建设与技术论文,如何做设计网站页面,凤翔网站制作总览 线程jiggler是一个简单的测试框架#xff0c;用于执行代码以查找线程问题。 它通过在运行时修改字节码类的类来工作#xff0c;以在指令之间插入Thread.yield#xff08;#xff09;调用#xff0c;从而“微动”线程。 这极大地增加了发现线程问题的可能性#xff0… 总览 线程jiggler是一个简单的测试框架用于执行代码以查找线程问题。 它通过在运行时修改字节码类的类来工作以在指令之间插入Thread.yield调用从而“微动”线程。 这极大地增加了发现线程问题的可能性并且无需更改生产代码即可做到这一点。 背景 我最近正在研究如何测试多线程代码中的线程问题并从IBM找到了一个名为ConTest的工具但找不到我可以使用的任何代码。 很自然地我以为我会自己加油。 考虑一下这个规范的简单但线程不安全的类 private int count 0 ;public void count() {count;} count方法的字节码为 DUP GETFIELD asm/Foo.counter : I ICONST_1 IADD PUTFIELD asm/Foo.counter : I 这提供了几个可以进行上下文切换的位置这意味着可以增加计数但未按预期存储。 让我们考虑一个快速的单元测试 Counter counter new BadCounter();int n 1000;Testpublic void singleThreadedTest() throws Exception {for (int i 0; i n; i) {counter.count();}assertEquals(n, counter.getCount());}... 该测试在单个线程中运行并通过。 让我们尝试在两个线程上运行它看看它是否失败。 public void threadedTest() throws Exception {final CompletionServiceVoid service new ExecutorCompletionServiceVoid(Executors.newFixedThreadPool(2));for (int i 0; i n; i) {service.submit(new CallableVoid() {Overridepublic Void call() {counter.count();return null;}});}for (int i 0; i n; i) {service.take().get();}assertEquals(n, counter.getCount());} 这也过去了。 在我的计算机上我可以将n增加到100,000直到它开始持续失败。 Expected :1000000 Actual :999661 只有0.04的测试有问题。 我们学到了什么 我们已经学会了一种运行多线程测试的简单方法但是我们已经知道因为我们无法控制线程何时执行工作所以这有点试验和错误。 线程跳动 因此行使代码来发现线程缺陷的一个问题是您无法控制线程何时屈服。 但是我们可以重写字节码以便在指令之间的字节码中插入Thread.yield。 在上面的示例中我们可以通过更改字节码来获取产生更多问题的代码 DUP GETFIELD asm/Foo.counter : I INVOKESTATIC java/lang/Thread.yield ()V ICONST_1 IADD PUTFIELD asm/Foo.counter : I 使用ASM我们可以创建一个重写器来插入这些调用。 JigglingClassLoader即时重写类添加这些调用。 由此我们可以创建一个JUnit运行器以使用新的类加载器进行测试来运行。 Jiggle(threadjiggler.test.*) public class BadCounterTest {... } 现在运行测试 Expected :1000000 Actual :836403 我们看到线程问题的测试数量跃升到16。 我们无需重新编译代码也不会影响在同一JVM中运行的其他单元测试。 读者练习 SimpleDateFormat是Java中众所周知的非线程安全类。 编写一个使类动摇的测试。 为什么它不是线程安全的 您将如何重写它以确保线程安全 您如何在不使用ThreadLocal锁或同步的情况下这样做 源代码 可以在Github上找到此代码。 进一步阅读 我写了一篇关于测试线程代码是否正确的文章 。 您可能还希望更一般地阅读 并发的错误模式及其测试方法– Eitan FarchiYarden NirShmuel Ur IBM Haifa Research Labs 介绍如何测试和调试并发软件的困难的演讲– Shmuel Ur Java理论与实践表征线程安全 参考来自JCG合作伙伴 Alex Collins的Thread Jiggling 位于Alex Collins的博客博客中。 翻译自: https://www.javacodegeeks.com/2013/09/thread-jiggling.html
http://www.yutouwan.com/news/88759/

相关文章:

  • 免费舆情网站直接打开app开发工具哪个好
  • 网站建设步骤详解视频教程个人网站搭建平台
  • 菏泽网站建设 梧桐树下载应用市场
  • html 网站新功能介绍滕州网站设计
  • 怎么注册网站域名个人简历表格电子版下载
  • 江苏分销网站建设网站建设的目的及功能
  • 河南做网站最好的公司药品网站前置审批
  • 用WordPress做网站入门课电子商务网站的建站流程
  • 做网站app 需要多少钱塑业东莞网站建设
  • 做情书直接点网站自己做网站模板
  • 网站建设登录结构图国外做化工网站
  • wordpress 地址插件昆明网站seo优化
  • 山西网站制作公司东莞市做网站的最好的是哪家的
  • 微信网站二次开发怎么删除安装wordpress
  • 利用店铺网站做灰色优化终身免费vps
  • 高端网站建设哪家好平台门户网站建设方案
  • 服装高级定制广州短视频seo哪家好
  • 给网站做cdn2013电子商务网站建设考试试卷
  • 如何创建自己的公司网站哪里免费做网站
  • iis本地网站wordpress 缓存 自适应
  • 亿联时代网站建设建一个英文网站需要多少钱
  • 电子商务网站后台核心管理多语种网站制作
  • 制作类似网站软件开发的某网站建设公司网站源码
  • 中国男女直接做的视频网站网站反链数
  • 临沂河东建设局网站商城网站互动性
  • 做旅游广告在哪个网站做效果好上海英文网站建设公司
  • 网站推广专业术语贵阳网站建设多少钱
  • 建设企业学习网站列出网站目录
  • 廊坊专业网站建设丰涵网站建设
  • 网站界面设计的发展域名注册查询阿里云