为什么有多线程

2021-02-10  本文已影响0人  侧耳倾听y

线程是操作系统最小的调度单元,多个线程同时运行,就是多线程。

为什么有多线程

多核CPU才是真正意义上的并行,现在最多的物理服务器好像有一千多核,多线程能充分发挥多核服务器的性能。

单核CPU也可以执行多线程程序,操作系统可以给每个线程分配时间片,在多个线程之间进行切换。因为IO操作(包括磁盘IO和网络IO)不消耗CPU时间片,所以单核CPU在某些情况执行多线程程序也会提升效率。

多线程真的快吗

操作系统切换线程的时候,会将线程的状态,加载到上次挂起的状态,这个过程会消耗一定的时间,如果频繁切换上下文,会影响线程的执行效率。

减少上下文切换的措施:1.无锁并发编程 2.使用CAS 3.使用最少的线程

有一次面试,面试官问我你看到mysql所在服务器CPU飙升,是什么问题:可能是有很多慢查询,cpu在这些慢查询之间一直调度导致。

多线程编程过程中,可能会用到锁,如果是多个锁的话,就可能造成死锁。

避免死锁:1.避免一个线程同时获取多个锁 2.避免一个线程在锁内同时占用多个资源 3.使用定时锁 4.对于数据库锁,加锁和解锁必须在同一个数据库连接内。

例如服务器带宽2mb/s,某个资源下载速度是1mb/s,系统启动10个线程下载,下载速度也不会变成10mb/s。

多线程编程

多线程编程过程中,会遇到一些需要解决的问题,这些问题一般都有线程的api,下面总结一些这些问题

synchronized、Lock

wait、notify等

volatile、ConcurrentHashMap等

线程池

上一篇下一篇

猜你喜欢

热点阅读