JUC并发编程 - 1. 概览
1. 概览
1.1 这门课讲什么
这门课中的「并发」涵盖了Java平台上的:
-
进程:程序的执行实例,拥有独立的内存空间。
-
线程:进程内独立执行的最小单位,多个线程共享同一个进程的内存。
-
并发:多个任务交替执行,利用单核CPU切换上下文实现“同时执行”的效果。
-
并行:多个任务真正同时执行,通常基于多核CPU。
此外,这门课还包括:
-
Java的并发工具类、常见并发问题与解决方案;
-
其他领域的并发知识拓展,比如操作系统层面的并发机制和数据库事务并发控制。
1.2 为什么要学这门课?
我工作中用不到并发啊?
这是很多开发者的第一反应。其实:
-
Web开发:高并发场景随处可见,如Servlet容器中一个请求就是一个线程。
-
数据库访问:连接池、事务、锁机制都涉及并发控制。
-
分布式系统:网络通信、异步任务、消息队列都绕不开并发。
-
移动/桌面应用:响应式UI、后台任务、线程池。
即便你暂时用不到,理解并发能让你写出更高质量的代码,并在遇到复杂问题时游刃有余。
1.3 课程特色
本门课程以并发/并行为主线,贯穿三大要素:
-
应用:从实际工作中总结问题场景。
-
原理:底层机制详解,帮助你理解“为什么”。
-
模式:传授大厂的“正确姿势”。
强调两点:
-
理论与实战结合,力求让你“会用 + 懂原理”。
-
所有代码遵循良好的编码规范,比如给线程取有意义的名字。
1.4 预备知识
建议你具备以下基础:
-
非Java入门者:至少有Web开发或多线程开发经验。
-
线程安全意识:接触过Java Web、JDBC开发、Web服务器、分布式框架者更佳。
-
JDK 8 基础:理解lambda表达式、函数式编程概念。
-
日志/依赖管理:
-
使用slf4j + logback管理日志;
-
使用lombok简化Bean代码。
-
环境依赖
pom.xml:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns="http://ch.qos.logback/xml/ns/logback"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback logback.xsd">
<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>
2. 进程与线程(预告)
本章内容预览:
-
进程 vs 线程:核心概念对比。
-
并行 vs 并发:常见误区澄清。
-
线程的基本用法:创建、启动、终止等。