字节跳动

目录

计算机网络

JUC

1.如何减少上下文切换

2.介绍volatile

3.java内存模型

5.CAS

6.AQS


计算机网络

HTTP

JUC

1.如何减少上下文切换

减少上下文切换的方法有无锁并发编程,CAS算法,使用最少线程和使用协程

无锁并发编程:多线程竞争锁时,会引起上下文切换,所以可以用一些方法来避免使用锁,比如将数据的id按照hash算法取模分段来实现,让不同的线程处理不同段的数据

CAS算法:java的Atomic包使用的是CAS算法来更新数据,而不需要加锁,也就不会有上下文切换了

使用最少线程:避免创建一些不必要的线程,比如说,很少的任务创建了大量的线程,导致大量线程处于等待状态

协程:在单线程中实现多任务的调度,并在单线程里维持多个任务间的切换

3.java内存模型

 

4.伪共享

线程池

 

java线程池主要用于管理线程组及其运行状态,以便java虚拟机能够更好的利用CPU资源,线程池的主要作用是线程复用,线程资源管理,控制操作系统的最大并发数,以保证系统高效且安全的运行

java线程池的工作原理:JVM根据用户参数创建一定数量的可运行的线程任务,并将其放入队列中,在线程创建后启动这些任务,如果线程数超过了最大线程数,则超出数量的线程排列等候,在有任务执行完毕后,线程池调度器会发现可用的线程,进而再次从队列中取出任务并执行
线程池的创建

线程池7大核心参数,也即ThreadPoolExecutor构造器核心参数

四大拒绝策略

❑ AbortPolicy:直接抛出异常。

❑ CallerRunsPolicy:只用调用者所在线程来运行任务。

❑ DiscardOldestPolicy:丢弃队列里最近的一个任务,并执行当前任务。

❑ DiscardPolicy:不处理,丢弃掉。

猜你喜欢

转载自blog.csdn.net/qq_43204550/article/details/108840416