并发系列2-- 线程基础

Posted Cessi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发系列2-- 线程基础相关的知识,希望对你有一定的参考价值。

一、线程和进程的概念

1.进程/线程概念

进程是资源(CPU,内存空间)分配的基本单位,它是程序执行的一个实例。

线程是程序执行的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。一个进程可以包含多个线程

2.线程进行区别

1.进程是资源分配最小单位,线程是程序执行最小单位

2.进程拥有独立地址空间,系统会建立数据表来维护独立的代码段、堆栈和数据段,开销昂贵。线程共享进程中的数据,CPU创建线程开销比进行小得多

3.线程通信更为方便。

线程通信方法:互斥量、读写锁、自旋锁、线程信号、条件变量

进程通信方法:无名管道、有名管道、信号、共享内存、消息队列、信号量无名管道、有名管道、信号、共享内存、消息队列、信号量

4.多进程有利于分布式机器的程序运行。同时多进程的程序健壮性更好,进程报错不会影响其他进程。

   二、线程的状态切换

状态意义
New-新建创建后尚未启动
Runnable-可运行正在运行/正在等待CPU时间片,对应操作系统中的Running与Ready
Blocking-阻塞等待获取一个写锁(排他锁)
waiting-无限等待

1.没有设置Timeout的线程,通过wait()进入,notify退出。2.设置了超时时间的,通过join进入,执行完毕退出。3.LockSupport.park()也可进入该状态

timed waiting-限期等待无须其他线程主动唤醒,在一定时间后会被系统自动唤醒。
terminated-死亡任务结束活产生异常导致结束

三、线程使用方式

方式描述
实现Runnable接口实现run方法,通过Thead的start方法启动线程
实现Callable接口与Runnable相比,返回值通过FutureTask封装
集成Thead类实现run方法

以上是关于并发系列2-- 线程基础的主要内容,如果未能解决你的问题,请参考以下文章

并发系列2-- 线程基础

并发系列2-- 线程基础

并发编程系列之线程基础知识回顾

掌握系列之并发编程-1.并发基础

go基础系列~并发协程

并发系列1-- JAVA并发基础