随笔分类 - 2.2 多线程
摘要:浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其他线程 便只能一直等待,等待获取锁的线程释放锁,而获取锁的线程释放锁会有三种情况: 1).获取锁的线
阅读全文
摘要:信号量 一:什么是信号量 信号量是对锁的扩展,不管是同步synchronized还是ReentrantLock,一次只能允许一个线程访问一个资源,但是信号量可以使得多个线程,同时访问一个资源。 基本方法: public Semaphore(int permits) { sync = new Nonf
阅读全文
摘要:Runable和Callable两者联系: 两者都是多线程开发需要实现的接口,Callable不能直接替换Runable,需要通过Runable接口的实现类FutherTask包装一下,才可以在Thread中使用,底层还是通过Runable接口的run方法调用Callable中的call方法处理业务
阅读全文
摘要:转:https://www.cnblogs.com/selene/p/5972882.html volatile不能保证数据同步 volatile关键字比较少用,原因无外乎两点,一是在Java1.5之前该关键字在不同的操作系统上有不同的表现,所带来的问题就是移植性较差;而且比较难设计,而且误用较多,
阅读全文
摘要:转:https://www.cnblogs.com/lixinjie/p/10817860.html 不是线程的安全面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。同理,“
阅读全文
摘要:Executor的介绍 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Th
阅读全文
摘要:一.对象锁和类锁的区别 对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的class对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。但是有一点必须注意的是,其实类锁只是一个概
阅读全文