其他分享
首页 > 其他分享> > 多线程知识扫盲

多线程知识扫盲

作者:互联网

 

一,进程,多线程基础预览

A, 进程:
B, 线程
C, 进程和线程的关系

3.一个程序可以对应多个进程(多进程),一个进程中可有多个线程,但至少要有一条线程

5,二者的生命周期基本一致:新建,就绪,运行,阻塞,死亡

 

D、多进程

打开Windows任务管理器

 

E、 多线程

3.多线程的优点:

能适当提高程序的执行效率

4.多线程的缺点:

开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能

线程越多,CPU在调度线程上的开销就越大

 

F、并行、并发、高并发等概念

 

F、多线程与高并发的联系

二,Java中线程及多线程

A,JVM线程生命周期

线程是 JVM 执行任务的最小单元,理解线程的状态转换是理解后续多线程问题的基础。在 JVM 运行中,线程一共有 NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 六种状态,这些状态对应 Thread.State 枚举类中的状态。

如下图所示,当创建一个线程时,线程处在 NEW 状态,运行 Thread 的 start 方法后,线程进入 RUNNABLE 可运行状态。

 

B,使用线程池创建多线程,实现异步调用

线程池通过复用线程,避免线程频繁地创建和销毁。Java 的 Executors 工具类中提供了 5 种类型的线程池创建方法,如下图所示,来看它们的特点和适用场景。

C,应对多线程并发问题所使用的锁

1,单机场景下的synchronized,锁对象&方法->对象;锁类和静态方法->类的所有对象

2,分布式场景下的分布式锁,一般使用Redis控制即可。比如封装好的工具类,Redisson。

 

D,Java中的并发容器

1,ConcurrentHashMap,读写并发。较HashMap,其在并发性上读不锁,写的时候锁粒度减小为segment而不是整张表,也就意味着一定程度上可以进行“并发写”。

2,CopyOnWriteArrayList,实现读写分离。读的时候不加锁不阻塞,iterator自诞生之时起就指着一个原版读,由于写是在副本上写,所以读不会出问题。

 

 

 

标签:执行,并发,知识,扫盲,线程,进程,多线程,CPU
来源: https://www.cnblogs.com/Jashinck/p/15114998.html