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>
  • 相关阅读:
    pytorch 文本输入处理
    理解 on-policy 和 off-policy
    Monte Carlo与TD算法
    Monte Calro Tree Search (MCTS)
    强化学习概览
    linux 服务器 keras 深度学习环境搭建
    sed和awk学习整理
    linux shell编程进阶学习(转)
    gdb调试:
    MySQL C API 访问 MySQL 示例
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/10019739.html
Copyright © 2011-2022 走看看