鍍金池/ 教程/ Java/ Java 并發(fā)性和多線程
Java TCP/IP Socket 編程
初識 Spring Security
IntelliJ IDEA 使用教程
Java 并發(fā)性和多線程
Servlet 教程
Netty 4.x 用戶指南
Swing 教程
自己動手寫框架
SQL 指南
Hibernate
JUnit 入門教程
MyBatis
排序算法
深入理解 Java 虛擬機(jī)
Struts 2
Eclipse 使用教程
JSP 教程
常見設(shè)計模式
Java NIO 指南
Java 集合
JNI/NDK 開發(fā)指南
JDBC 指南
Java 中文亂碼解決之道
Tomcat 8 權(quán)威指南
菜鳥學(xué) SSH
Maven 教程
Java 提高篇
前言
Java 面試匯總
Log4j
Spring 教程
深入理解 Java 內(nèi)存模型
Java 反射機(jī)制
Disruptor 入門
Google Guava 官方教程
MySQL 教程
跟我學(xué) Shiro

Java 并發(fā)性和多線程

提及多線程,我們就會想到進(jìn)程、線程、中央處理器(CPU)。那么什么是進(jìn)程呢?進(jìn)程是程序執(zhí)行的最小單位、線程是程序的執(zhí)行流,CPU 則是處理執(zhí)行流的中轉(zhuǎn)站和翻譯器。

那么并發(fā)呢?當(dāng)有多個線程在操作時,如果系統(tǒng)只有一個 CPU,則它根本不可能真正同時進(jìn)行一個以上的線程,它只能把 CPU 運(yùn)行時間劃分成若干個時間段,再將時間 段分配給各個線程執(zhí)行,在一個時間段的線程代碼運(yùn)行時,其它線程處于掛起狀。這種方式我們稱之為并發(fā)(Concurrent)。

一個比較簡潔的例子:如果進(jìn)程是火車的車廂、那么火車就是線程,我們的火車站調(diào)度站就是 CPU。很久以前,我們只能讓一輛火車進(jìn)站出站后,下一輛火車才能進(jìn)站,這樣的效率很差,大部分時間都是火車排長隊的等待,我們的調(diào)度資源處于極大的浪費(fèi);后來人們改進(jìn)了方案,增加了很多條軌道,可以讓多輛火車同時進(jìn)站和出站,這樣調(diào)度資源得到高效利用;沒開心幾天,問題發(fā)生了,突然有一天,發(fā)生了一場災(zāi)難,因為沒有有效的管理,兩量同時進(jìn)站相向的火車并軌相撞了,為了避免這類并行問題的發(fā)生,人們加入優(yōu)先級調(diào)度,讓客車優(yōu)先于貨運(yùn)車,加入快車、慢車,安排好時間管理,這樣從根本上杜絕火車進(jìn)站并軌的問題。

可能上面的描述還不能讓你有個更好的理解,那么來這里

課程入口

推薦學(xué)習(xí)過操作系統(tǒng)的人直接觀看 《Java 并發(fā)編程》