zoukankan      html  css  js  c++  java
  • 1-2+并发编程初体验

    /Concurrency/src/main/java/com/mmall/concurrency/example/count/CountExample.java

    package com.mmall.concurrency.example.count;
    
    
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Semaphore;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import lombok.extern.slf4j.Slf4j;
    @Slf4j
    public class CountExample {
       private static int threadTotal = 200;
       private static int clientTotal = 5000;
       
       private static int count = 0;
       
       private static final Logger log = LoggerFactory.getLogger(CountExample.class);
       public static void main(String[] args) {
          ExecutorService exec = Executors.newCachedThreadPool();
          final Semaphore semaphore = new Semaphore(threadTotal);
          for (int index = 0; index < clientTotal; index++) {
              exec.execute(() -> {
                  try {
                    semaphore.acquire();
                    add();
                    semaphore.release();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    log.error("exception",e);
                }
              });
          }
          exec.shutdown();
          log.info("count:{}", count);
    }
       
       private static void add() {
           count++;
       }
    }

    /Concurrency/src/main/java/com/mmall/concurrency/example/count/MapExample.java

    package com.mmall.concurrency.example.count;
    import java.util.Map;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Semaphore;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.google.common.collect.Maps;
    
    
    import lombok.extern.slf4j.Slf4j;
    @Slf4j
    public class MapExample {
        private static Map<Integer, Integer> map = Maps.newHashMap();
      
        private static int threadNum = 200;
        private static int clientNum = 5000;
        
        private static final Logger log = LoggerFactory.getLogger(MapExample.class);  
        
        public static void main(String[] args) {
            ExecutorService exec = Executors.newCachedThreadPool();
            final Semaphore semaphore = new Semaphore(threadNum);
            for (int index = 0; index< clientNum; index++) {
                final int threadNum = index;
                exec.execute(() -> {
                    try {
                        semaphore.acquire();
                        func(threadNum);
                        semaphore.release();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        log.error("exception", e);
                    }
                });
            }
            exec.shutdown();
            log.info("size:{}",map.size());
        }
        public static void func(int threadNum) {
            map.put(threadNum, threadNum);
        }
    
    }

    threadNum=1

    /Concurrency/src/main/java/com/mmall/concurrency/example/count/MapExample.java

    package com.mmall.concurrency.example.count;
    import java.util.Map;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Semaphore;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.google.common.collect.Maps;
    
    
    import lombok.extern.slf4j.Slf4j;
    @Slf4j
    public class MapExample {
        private static Map<Integer, Integer> map = Maps.newHashMap();
      
        private static int threadNum = 1;
        private static int clientNum = 5000;
        
        private static final Logger log = LoggerFactory.getLogger(MapExample.class);  
        
        public static void main(String[] args) {
            ExecutorService exec = Executors.newCachedThreadPool();
            final Semaphore semaphore = new Semaphore(threadNum);
            for (int index = 0; index< clientNum; index++) {
                final int threadNum = index;
                exec.execute(() -> {
                    try {
                        semaphore.acquire();
                        func(threadNum);
                        semaphore.release();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        log.error("exception", e);
                    }
                });
            }
            exec.shutdown();
            log.info("size:{}",map.size());
        }
        public static void func(int threadNum) {
            map.put(threadNum, threadNum);
        }
    
    }

    threadNum=1

    /Concurrency/src/main/java/com/mmall/concurrency/example/count/CountExample.java

    package com.mmall.concurrency.example.count;
    
    
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Semaphore;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import lombok.extern.slf4j.Slf4j;
    @Slf4j
    public class CountExample {
       private static int threadTotal = 1;
       private static int clientTotal = 5000;
       
       private static int count = 0;
       
       private static final Logger log = LoggerFactory.getLogger(CountExample.class);
       public static void main(String[] args) {
          ExecutorService exec = Executors.newCachedThreadPool();
          final Semaphore semaphore = new Semaphore(threadTotal);
          for (int index = 0; index < clientTotal; index++) {
              exec.execute(() -> {
                  try {
                    semaphore.acquire();
                    add();
                    semaphore.release();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    log.error("exception",e);
                }
              });
          }
          exec.shutdown();
          log.info("count:{}", count);
    }
       
       private static void add() {
           count++;
       }
    }

    /Concurrency/pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.mmall.concurrency</groupId>
        <artifactId>Concurrency</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>Concurrency</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>23.0</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/10019739.html
Copyright © 2011-2022 走看看