Skip to content

Latest commit

 

History

History
21 lines (16 loc) · 859 Bytes

sync_async_nonblock.md

File metadata and controls

21 lines (16 loc) · 859 Bytes

无锁 异步 非阻塞

同步

一个任务在同一个线程中执行

无锁

一般程序中很难做到无锁,但还是有一些手段可以避免锁,如事件机制,akka应该也算是, 函数式回调,schedule。 如果需要加锁首先看是不是可以使用volatile,适用于一写多读的场景,其次是原子锁,最后 才使用同步锁,如果使用同步锁最好不要用于线程争抢比较严重,性能关键点的部分。否则会 影响程序性能。

异步

如果一个线程执行性能不够如计算资源或有阻塞任务需要把当前执行环节拆分成子任务放到 多个线程中分别执行。

非阻塞

当前线程没有被block住 常见阻塞方式:如IO阻塞,线程之间同步阻塞,Thread.sleep or LockSupport

高并发项目优化关键就是尽量使用上述原则。