Java多线程之自旋锁与队列锁

2016-04-14
阅读 8 分钟
7.7k
编写高效的并发程序,需要对互斥问题重新研究,设计出适用于多线程的互斥协议。那么问题来了,如果不能获得锁,应该怎么做? 旋转:继续进行尝试,如自旋锁,延迟较短; 阻塞:挂起自己,请求调度器切换到另一个线程,代价较大。 综合来看,先旋转一小段时间再阻塞,是种不错的选择。 java.util.concurrent.locks.Lock接...

Java多线程之线程安全与异步执行

2016-04-11
阅读 6 分钟
7.8k
多线程并发修改一个数据结构,很容易破坏这个数据结构,如散列表。锁能够保护共享数据结构,但选择线程安全的实现更好更容易,如阻塞队列就是线程安全的集合。

Java多线程之同步与阻塞队列

2016-04-10
阅读 4 分钟
9.3k
多线程对共享数据的读写涉及到同步问题,锁和条件是线程同步的强大工具。锁用来保护代码片段(临界区),任何时刻只能有一个线程执行被保护的代码。条件对象用来管理那些已经进入被保护的代码段但还不能运行的线程。

Java多线程之线程的创建、中断、状态与属性

2016-04-09
阅读 3 分钟
6.6k
多进程与多线程的本质区别在于:每个进程拥有自己的一整套变量,而线程则共享数据。如果需要执行一个比较耗时的任务,应该使用独立的线程。 可以通过实现Runnable接口或继承Thread类来创建独立的线程。 1) 实现Ruannable接口 {代码...} 2) 继承Thread类 {代码...} 对于Thread类或Runnable对象,启动新线程调用的是start(...