谈一谈Java多线程的理解

  • 概念

下面是百度百科关于进程和线程的说明:

进程:进程是线程的容器,进程是正在运行的程序的实例。它是活动的且有状态变化的。

在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。

在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。

通常,一个进程在创建后将处于就绪状态。

(1)运行(running)态:进程占有处理器正在运行。
(2)就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。
(3)等待(wait)态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。

线程:线程是程序执行的最小单元,线程是进程中的一个实体,具有就绪,阻塞和运行三种基本状态。

一个进程可以有很多线程,每条线程并行执行不同的任务。

多线程编程中需要考虑的问题:什么是竞争资源、什么时候考虑同步、怎么同步。

通常需要考虑的设计有:

(1)把竞争访问的资源标识为private,禁止直接访问。

(2)通过volatile关键字作用于共享变量,保证变量在多个线程之间的可见性,以及防止指令重排序。

(3)同步那些修改变量的代码,使用synchronized 关键字同步方法或代码,或者使用ReenTrantLock可重入锁。

TODO.....

猜你喜欢

转载自www.cnblogs.com/scorpio-cat/p/12771689.html