`
xly1981
  • 浏览: 146657 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

表产生sequence功能,测试并发

阅读更多
	@Test
	public void testSerialNum() throws Exception{
	    final ConcurrentHashMap<String,Integer> map = new ConcurrentHashMap<String,Integer>(5000);
	    Vector<Thread> threads = new Vector<Thread>();
	    Thread r = new Thread() {
	        public void run() {
	            for (int i = 1; i <= 500; i++) {
	                String seqNo =   serialNum.getLocalNum("444", "t_acc_subject_occur_his", 10);
	                updateMap(map,seqNo,"r1");
	            }
	        }

	    };
	    threads.add(r);
	    Thread r1 = new Thread() {
	        public void run() {
	            for (int i = 1; i <= 500; i++) {
	                String seqNo =   serialNum.getLocalNum("444", "t_acc_subject_occur_his", 10);
	                updateMap(map,seqNo,"r2");
	            }
	        }
	        
	    };
	    threads.add(r1);
	    Thread r2 = new Thread() {
	        public void run() {
	            for (int i = 1; i <= 500; i++) {
	                String seqNo =   serialNum.getLocalNum("444", "t_acc_subject_occur_his1", 10);
	                updateMap(map,seqNo,"r3");
	            }
	        }
	        
	    };
	    threads.add(r2);
	    r.start();
	    r1.start();
	     r2.start();
	    for (Thread iThread : threads) {
	        try {
	            // 等待所有线程执行完毕
	            iThread.join();
	        } catch (InterruptedException e) {
	            e.printStackTrace();
	        }
	    }
	    for(String str:map.keySet()){
	        if(map.get(str)>1){
	            System.out.println(str+"================================================(((((((((((((((((((((((((((="+str+"---"+map.get(str));
	        }
	    }
	}
	
	public static synchronized  void updateMap(ConcurrentHashMap<String, Integer> map,String key,String id){
	    if(map.containsKey(key)){
	        Integer i = map.get(key);
	        map.put("", i+1);
	    }else{
	        map.put(key, 1);
	    }
	}
	


分享到:
评论

相关推荐

    sequence-master.zip

    测试用例则验证了服务的功能和性能,确保其稳定可靠。 总之,Sequence是一个高性能的分布式有序ID生成器,它的出现解决了大规模分布式系统中生成全局唯一且有序ID的难题。通过深入研究和使用,我们可以更好地理解和...

    Verilog Testbench设计技巧和策略.zip

    顶层Testbench负责管理整个仿真流程,激励模块产生输入序列,监控模块检查设计输出是否符合预期,覆盖率模块衡量测试完整性。 二、激励生成 1. 随机化测试:使用随机化算法生成测试数据,可以覆盖更广泛的测试用例...

    System Verilog Assertion 简介

    - **协议覆盖**:度量设计规格说明中所有规定的功能是否已经被充分测试。 - **测试计划覆盖**:评估测试平台本身的完备性,即是否已经涵盖了所有预期的测试场景。 #### 二、SVA 的定义及其优势 **SVA**(System ...

    编写Testbench的一些技巧

    - **initial 和 always 语句**:initial 语句仅执行一次,常用于产生激励;always 语句持续执行,适合被动的响应检测。如果需要initial语句重复执行,可以嵌套循环语句,或者使用`fork...join`语句实现并发执行任务...

    软件工程术语表

    这通常包括功能测试、性能测试、用户界面测试等,确保软件符合用户需求和业务目标。 #### 动作(Action) 在软件工程和UML中,动作表示系统或对象执行的一个单位工作。它可以是简单的操作,如设置变量值,也可以是...

    循环向数据库添加数据

    - **测试数据生成**:在进行系统性能测试或功能测试时,快速生成大量测试数据至关重要。 - **数据迁移**:从旧系统迁移到新系统时,批量数据插入可以显著提高效率。 - **批量作业处理**:如定期报告生成、数据分析等...

    UML_guid

    3. **序列图(Sequence Diagrams)**:序列图展示了对象之间交互的顺序,强调时间顺序和消息传递,常用于表示协作行为。 4. **协作图(Collaboration Diagrams)**:协作图与序列图类似,但更侧重于对象间的关系和...

    软件工程词汇表(软件开发人员必备_)

    **多态**(Polymorphism)是指同一种操作作用于不同的对象,可以有不同的解释,并产生不同的执行结果。多态是面向对象编程中的一个重要特征。 #### 44. ActiveObject **ActiveObject** 是一种特殊的对象,它可以...

    uvm1.2源码

    1. **代理(Agent)**:代理是UVM的基本构建块,它封装了与DUT(Design Under Test,待测试设计)交互的所有功能。在UVM1.2中,代理包含驱动、监视器和序列器,它们通过总线接口进行通信。 2. **序列器(Sequencer)**...

    100个Swift必备Tips(第二版)1

    5. **序列(Sequence)**:Swift中的序列是能依次产生一系列值的对象,如数组和集合。 6. **元组(Tuple)**:元组允许将多个值组合成一个单一的复合值,便于临时数据包装。 7. **自动闭包(Autoclosure)**:Swift自动...

    swifter-tips.pdf

    GCD(Grand Central Dispatch)是Swift中的并发编程模型,用于异步执行任务。延时调用则可以用来在指定时间后执行代码。 #### 获取对象类型 Swift提供了多种方法来获取对象的具体类型,这对于编写类型无关的代码...

Global site tag (gtag.js) - Google Analytics