Java 多线程程序的测试

work

这个问题最初来自于一封公司内部的话题探讨邮件,再加上了一些我的理解。

首先,需要明确的是,用 Java 通常构建多线程安全的程序“非常”困难,如果还没有体会到“非常”的话,阅读《Java Concurrency in Practice》(中文名叫做《Java 并发编程实战》,在我的 书单 里面,我认为它基本是最好的系统介绍 Java 并发的书了)可能可以改变你的看法。

多线程的基础

基础是王道。对于任何一门语言都是如此,有的基础部分是和语言无关的,也有一部分是和 Java 语言相关的。这里我不过多展开,但是我想提一提对于 JSR 规范 的理解。通常我们认为 Java 是一门啰嗦、冗长,容易使用,而且不容易造成破坏的语言

[……]阅读全文

笔记:线程的同步和互斥

线程的同步和互斥

线程的同步:指多线程通过特定的手段(如互斥量)来控制线程之间的执行顺序。

线程的互斥:实指对共享资源的约束访问。多线程环境中,某些资源只允许一个线程使用,这类资源成为临界资源,线程之间的关系就表现为互斥的。

线程之间的同步和互斥是通过操作系统的信号量和 PV 操作原语来实现的。

互斥体(Mutex)

表现互斥现象的数据结构,也被当作二元信号灯。一个互斥基本上是一个多任务敏感的二元信号,它能用作同步多任务的行为,它常用作保护从中断来的临界段代码并且在共享同步使用的资源。

信号量(Semaphore)

是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调

[……]阅读全文

Java 多线程发展简史

image 这篇文章,大部分内容,是周五我做的一个关于如何进行 Java 多线程编程的 Knowledge Sharing 的一个整理,我希望能对 Java 从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并且提及一些在多线程编程方面常见的问题。对于 Java 程序员来说,如果从历史的角度去了解一门语言一个特性的演进,或许能有不同收获。

 

引言

首先问这样一个问题,如果提到 Java 多线程编程,你会想到什么?

 

  • volatile、synchronized 关键字?
  • 竞争和同步?
  • 锁机制?
  • 线程安全问题?
  • 线程池和队列?

好吧,请原谅我在这里卖的关

[……]阅读全文

back to top