并发时候的测试程序

package concurrency;

import java.util.concurrent.atomic.AtomicReference;

public class TestConcurrency {

    private static volatile Integer         num1 = 0;
    private static Integer         num2 = 0;
    private static AtomicReference<Integer> ar   = new AtomicReference<Integer>(num1);

    public static void dfasd111() throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(new Runnable() {

                public void run() {
                    for (int i = 0; i < 10000; i++)
                        while (true) {
                            Integer temp = ar.get();
                            if (ar.compareAndSet(temp, temp + 1)) break;
                        }
                }
            }).start();
        }
        Thread.sleep(10000);
        System.out.println(ar.get()); // 10000000
    }

    public static void dfasd1112() throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(new Runnable() {

                public void run() {
                    for (int i = 0; i < 10000; i++) {
                        num1 = num1++;
                    }
                }
            }).start();
        }
        Thread.sleep(10000);
        System.out.println(num1); // something like 238981
    }

    public static void funnum2() throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(new Runnable() {

                public void run() {
                    for (int i = 0; i < 10000; i++) {
                        num2 = num2++;
                    }
                }
            }).start();
        }
        Thread.sleep(10000);
        System.out.println(num2); // something like 238981
    }

    public static void main(String[] args) {

        try {
           // dfasd111();
            //dfasd1112();
            funnum2();
        } catch (InterruptedException e) {

            // TODO Auto-generated catch block e.printStackTrace();

        }

    }

}
时间: 2024-10-14 13:16:05

并发时候的测试程序的相关文章

进程的并发性的测试程序

给一个很有趣的进程并发性的小例子: static void Main(string[] args) { new Thread(WriteX).Start(); new Thread(WriteY ).Start(); WriteZ(); Console.ReadKey(); } static void WriteX() { Console.WriteLine($"线程编号X:{Thread.CurrentThread.ManagedThreadId}"); for (int i = 0

为什么多数游戏服务端是用 C++ 来写

早年开发游戏必须用C++,这没得说,2000-2004年,java还没有nio,其他动态语言不抗重负,只能C/C++能开发出完整可用的游戏服务端.直到2005年,韩国的游戏很多都还是纯C++写服务端,金山之前也开发过很多纯粹C++的游戏服务端,后来大家都切了. 现代选择有很多:java + javascript, c+python, c+lua, scala, go, erlang.我们面向性能的服务器用 java,面向逻辑服务器 python,面向高并发的会选择 scala,次一级高并发或者性

《大型网站技术架构:核心原理与案例分析》笔记

目录 · 大型网站软件系统的特点 · 大型网站架构演化发展历程 · 初始阶段的网站架构 · 需求/解决问题 · 架构 · 应用服务和数据服务分离 · 需求/解决问题 · 架构 · 使用缓存改善网站性能 · 需求/解决问题 · 架构 · 使用应用服务器集群改善网站的并发处理能力 · 需求/解决问题 · 架构 · 数据库读写分离 · 需求/解决问题 · 架构 · 使用反向代理和CDN加速网站响应 · 需求/解决问题 · 架构 · 使用分布式文件系统和分布式数据库系统 · 需求/解决问题 · 架构 ·

006-多线程-JUC线程池-并发测试程序

一.java代码模拟并发 1.1.一次并发 单次并发测试 1.使用CountDownLatch 等待一个或多个线程一起执行 详细参看:007-多线程-锁-JUC锁-CountDownLatch-闭锁[允许一个或多个线程,等待其他一组线程完成操作,再继续执行] 示例代码 @Test public void poolCountDownLatch() throws Exception { int parrelnum=100; //所有线程阻塞,然后统一开始 CountDownLatch begin =

IIS处理并发请求时出现的问题及解决

原文链接:http://www.cnblogs.com/hgamezoom/p/3082538.html 一个ASP.NET项目在部署到生产环境时,当用户并发量达到200左右时,IIS出现了明显的请求排队现象,发送的请求都进入等待,无法及时响应,系统基本处于不可用状态.因经验不足,花了很多时间精力解决这个问题,本文记录了我查找问题的过程和最后解决方案,供大家参考. 软硬件环境: IBM刀片服务器,Intel至强处理器,4物理核,16个逻辑核心,内存32G Windows Server2008 E

Java并发编程总结4——ConcurrentHashMap在jdk1.8中的改进

一.简单回顾ConcurrentHashMap在jdk1.7中的设计 先简单看下ConcurrentHashMap类在jdk1.7中的设计,其基本结构如图所示: 每一个segment都是一个HashEntry<K,V>[] table, table中的每一个元素本质上都是一个HashEntry的单向队列.比如table[3]为首节点,table[3]->next为节点1,之后为节点2,依次类推. public class ConcurrentHashMap<K, V> ext

Websocket全讲解。跨平台的通讯协议 !!基于websocket的高并发即时通讯服务器开发。

本博文,保证不用装B的话语和太多专业的语言,保证简单易懂,只要懂JAVAEE开发的人都可以看懂. 本博文发表目的是,目前网上针对Websocket的资料太散乱,导致初学者的知识体系零零散散,学习困难加大.本博加以整理,并且实践. 所用核心技术选型: Tomcat + Spring 4.0.3 + Mongodb(高并发数据库) + SpringQueue(消息队列)+ ActiveMQ (消息队列) + Spring-data-Mongo + Servlet 3.0 +Spring-Websoc

java并发编程实战笔记

1.复合操作 若一个类里有多个属性状态,对每个属性使用atomic类修饰,并且一个属性更新,要在同一原子操作内更新其他所有属性,这样才是线程安全类.需要整体类的状态操作是原子的. 要保持状态的一致性,就需要在单个原子操作中更新所有相关的状态变量. 判断同步代码块的合理大小,要权衡安全性.简单性和性能. 当执行时间较长的计算或可能无法快速完成的操作(如网络IO.控制台IO)一定不要持有锁. 2.对象的共享 1)可见性 为了确保所有线程都能看到共享变量的最新值,所有执行读操作或写操作的线程都必须在同

高并发网站架设

前端优化 css同类型合并--压缩-图片压缩-缓存-js压缩等 https://www.zhihu.com/question/21658448 http://www.cnblogs.com/fangshidaima/p/5823465.html 后端优化     php引号-foreach-算法-函数实现方法比对(运行时间测试修改) 数据库优化(大数据优化)    索引-字段类型-位数-引擎 服务器优化 数据传输优化  json格式 php系列化(serialize) seo优化 redis 安