Java 多线程与并发编程总结

   前言:现在的操作系统都是多任务操作系统,每个运行的任务就是操作系统所做的一件事情,比如你在听歌的同时还在用MSN和好友聊天。听歌和聊天就是两个任务,这个两个任务是“同时”进行的。一个任务一般对应一个进程,也可能包含好几个进程。启动进程的时候,操作系统会为进程分配资源,其中最主要的资源是内存空间,因为程序是在内存中运行的。在进程中,有些程序流程块是可以乱序执行的,并且这个代码块可以同时被多次执行。这样的代码块就是线程体。多线程的目的是为了最大限度的利用CPU资源。

  所谓的“并发执行”、“同时”其实都不是真正意义上的“同时”。众所周知,CPU都有个时钟频率,表示每秒中能执行cpu指令的次数。在每个时钟周期内,CPU实际上只能去执行一条(也有可能多条)指令。多个线程之间相互的切换去执行,这个切换时间也是非常短的。因此多任务、多进程、多线程都是操作系统给人的一种宏观感受,从微观角度看,程序的运行是异步执行的。 用一句话做总结:虽然操作系统是多线程的,但CPU每一时刻只能做一件事,和人的大脑是一样的…【详细

基础篇

进阶篇

轻松使用线程: 同步不是敌人
  摘要:与许多其它的编程语言不同,Java 语言规范包括对线程和并发的明确支持。语言本身支持并发,这使得指定和管理共享数据的约束以及跨线程操作的计时变得更简单,但是这没有使得并发编程的复杂性更易于理解……【详细】
 轻松使用线程: 同步不是敌人 轻松使用线程: 减少争用
 轻松使用线程: 不共享有时是最好的 不要重新分配被锁定对象的对象引用
 以全局的固定顺序获取多个所来避免死锁 Java 单例对象同步问题探讨
 Java 理论与实践: 描绘线程安全性 编写高效的线程安全类
 实现 Java 多线程并发控制框架 多线程、多平台环境中的跟踪
 使用 ConTest 进行多线程单元测试 
适用于 Java 程序员的 CSP
  摘要:虽然使用 Java? 语言进行多线程应用程序编程并不难掌握,但是许多开发人员都在为了正确地应用它们而挣扎。结果,多线程程序要比我们想像的更容易发生细微的错误,这导致一些开发人员为了避免使用多线程而不惜代价,……【详细】

 在 Java 平台上进行多线程编程的缺陷 用 JCSP 进行并发编程
 JCSP 的高级主题 实现一个不受约束的不变性模型
 实时 Java: 线程化和同步 Lock Analyzer 诊断同步和锁问题
 基于事件的 NIO 多线程服务器 实现非阻塞套接字的一种简单方法

高级篇:

Java 5 中的并发
  摘要:本教程将介绍 JDK 5.0 提供的用于并发的新实用程序类,并通过与现有并发原语(synchronized、wait() 和 notify())相比较,说明这些类如何提高了可伸缩性。……【详细】

 驯服 Tiger: 并发集合 Java5 多线程实践
 Java 理论与实践: 并发集合类 构建一个更好的 HashMap
 Java 理论与实践: 流行的原子 Java 理论与实践: 非阻塞算法简介
 处理InterruptedException 正确使用 Volatile 变量
 使用泛型和并发改善集合 JDK5.0中更灵活、更具可伸缩性的锁定
 Java 5.0 多线程编程实践 
JDK 7 中的 Fork/Join 模式
  摘要:随着多核时代的来临,软件开发人员不得不开始关注并行编程领域。而 JDK 7 中将会加入的 Fork/Join 模式是处理并行编程的一个经典的方法。虽然不能解决所有的问题,但是在它的适用范围之内,能够轻松的利用多个 CPU 提供的计算资源来协作完成一个复杂的计算任务……【详细】

 JDK7中的 Fork/Join模式 Java理论与实践: 应用fork-join 框架
 用ParallelArray类加速排序和搜索 Java SE 7的新并发特性
  
  
  

专题策划: IT168技术频道 溺水的鱼  设计制作: IT168 溺水的鱼