并发编程
1. 概览
1.1 这门课讲什么
这门课中的【并发】一词涵盖了在Java平台上的
- 进程
- 线程
- 并发
- 并行
以及Java并发工具,并发问题以及解决方案,同时也会包含一些其他领域的开发
1.2 为什么学这么课程
- 我工作中用不到并发啊?
1.3 课程特色
本门课程以并发、并行为主线,穿插讲解
- 应用 - 结合实际
- 原理 - 了然于胸
- 模式 - 正确姿势
1.4 预备知识
-
希望你不是一个初学者
-
线程安全问题,需要你接触过 Java Web 开发、Jdbc 开发、Web 服务器、分布式框架时才会遇到
-
基于 JDK 8,最好对函数式编程、lambda 有一定了解
-
采用了 slf4j 打印日志,这是好的实践
-
采用了 lombok 简化 java bean 编写
-
给每个线程好名字,这也是一项好的实践
pom.xml 依赖如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
logback.xml 配置如下:(resource目录下)
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss} [%t] %logger - %m%n</pattern>
</encoder>
</appender>
<logger name="c" level="debug" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
<root level="ERROR">
<appender-ref ref="STDOUT"/>
</root>
</configuration>