Zhang's Wikipedia

玩就玩大的

Java 并发 —— 从 BIO 到 NIO

BIO,同步阻塞;NIO:同步非阻塞; 在 NIO 技术之前,服务器侧使用多线程是 BIO 的一种伪阻塞的解决方法; BIO 的多线程机制存在的问题: 每一个 Socket 连接服务器,服务器侧都立刻开启(创建)一个线程处理, Socket socket = server.accept()...

2018-09-01 22:17:29

阅读数:176

评论数:1

C++ 资源管理 —— RAII

RAII:在构造函数中申请资源,在析构函数中释放资源。 1. RAII 自动实现锁资源的释放 void bad() { m.lock(); f(); if (COND) return; m.unlock(); } 显然如果提前返回,会导致死锁。 class ...

2018-01-29 23:29:28

阅读数:116

评论数:0

Java 并发 —— volatile 关键字

volatile 修饰变量等于向编译器传达如下两层含义: 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。 volatile 关键字定义了读写发生的次序: 对一个变量(被 volatile 修饰的变量)的写操作先...

2017-10-14 22:30:48

阅读数:180

评论数:0

C++ 多线程与并发

1. 非原子操作 这些非原子操作在被编译为汇编代码后不止一条指令。自加、自减少; new 关键字; 申请内存; 调用构造函数;

2017-09-17 17:42:33

阅读数:563

评论数:0

Java 并发 —— 读写锁(ReadWriteLock)

读写锁(ReadWriteLock),顾名思义,就是在读写某文件时,对该文件上锁。1. ReentrantReadWriteLock 三部曲: 加锁; 读写操作; 解锁;(为保证解锁操作一定执行,通常将其置于 finally 代码段内) 2. 将读写锁应用于集合类上使得集合线程安全。一个线程安全...

2017-09-12 23:55:31

阅读数:232

评论数:0

Java 并发 —— Thread、Executor、线程池

1. Thread Thread.yield():静态方法,其实对线程调度器(Java 线程机制的一部分,可将 CPU 从一个线程转移到另一个线程),意在告诉编译器“我已经执行完生命周期中最重要的部分了,此刻正是切换给其他嗷嗷待哺的任务执行一段时间的大好机会”。

2017-08-17 23:21:54

阅读数:241

评论数:0

【线程安全】—— 单例类双重检查加锁(double-checked locking)

1. 三个版本单例类的实现 版本1:经典版public class Singleton { public static Singleton getInstance() { if (instance == null) { instance = new ...

2017-08-02 16:43:30

阅读数:466

评论数:0

并发与计算机体系结构

多核 CPU,意味着多个 CPU,每一个核心对应着一个 CPU; 0. 主存与缓存计算机在执行程序时,每条指令都是在 CPU 中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取...

2017-08-02 15:05:59

阅读数:172

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭