多线程
文章平均质量分 83
时间慢慢
这个作者很懒,什么都没留下…
展开
-
多线程编程核心技术读书笔记(二):对象及变量的并发访问(synchronized关键字)
“非线程安全”问题存在于“实例变量”中,如果是方法内的私有变量,则不存在“非线程安全”问题; 即:方法内的变量为线程安全。 实例变量为非线程安全,(因为为公用资源)关键字synchronized取得的锁,都是对象锁,而不是对一段代码或者函数当做锁,也就是synchronized锁住的是对象;如果多线程访问的是多个对象,那JVM会创建多个锁;共享资源的读写访问才需要同步化;**问题:当一个线程进入原创 2017-09-01 11:49:09 · 4144 阅读 · 0 评论 -
多线程编程核心技术读书笔记(二):对象及变量的并发访问(volatile关键字)
并发编程中的三个概念 1.原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。如果不具备原子性,则会发生错误; 2.可见性 可见性是指当多个线程访问同一个变量时,一个线程修改了这原创 2017-09-01 12:21:52 · 231 阅读 · 0 评论 -
多线程编程核心技术读书笔记(一):Java多线程技能
什么是进程:能够让操作系统从宏观上看起来同一个时间段有多个任务在执行。进程让操作系统的并发成为了可能。 什么是线程:进程中独立运行的子任务。进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能。 一个进程虽然包括多个线程,但是这些线程是共同享有进程占有的资源和地址空间的。进程是操作系统进行资源分配的基本单位,而线程是操作系统进行调度的基本单位。对于单核CPU,如果是CPU密集型任务,如原创 2017-08-30 19:10:56 · 394 阅读 · 0 评论 -
多线程编程核心技术读书笔记(三):进程间通信
线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 1、通过共享对象通信 在共享对象的变量里设置信号值;线程A和B必须获得指向一个MySignal共享实例的引用,以便进行通信。 2、忙等待(busy wait) 用sleep()和while(true)实现通信 3、等待/通知机制(wait/notify) Java有一个内建的等待机制来允许线程在等原创 2017-09-01 18:04:32 · 252 阅读 · 0 评论 -
多线程编程核心技术读书笔记(四):Lock的使用
ReentrantLock类和ReentrantReadWriteLock类的使用; ReentrantLock类可以实现与synchronized关键字相同的功能,并有更强的拓展性,具有嗅探锁定、多路分支通知等功能,使用也更加灵活; Lock lock = new ReentrantLock(); lock.lock()方法获得对象锁,lock.unlock()方法释放对象锁。原创 2017-09-02 10:48:10 · 217 阅读 · 0 评论