多线程笔记

什么是线程安全

当多个线程在访问某一个类(对象或方法)时,这个类都能表现出正确的行为,那么这个类就是线程安全的。

什么是对象锁和类锁

当对象的方法使用synchronized修饰的时候,是对象锁,不同的对象可以同时调用此方法
当类的synchronized方法使用static是类锁,同一时间只能被一个线程调用。

多线程的脏读是如何产生的

当一个对象的set方法未执行完成时,对象的get方法执行,读到错误的数据。解决方法是对get的set方法都加上synchronied修饰

synchronized拥有锁重入的功能如何理解

当一个线程得到对象的锁之后,再次请求此对象可以再次得到锁。
如对象有两个同步方法A,B,A调B也是可以的。
如果父类和子类的方法都实现了同步,子类也可以调用父类的方法。

notify和wait有何不同

notify用于唤醒线程,不释放锁
wait使线程进入阻塞状态,释放锁

如何实现实时的通知

CountDownLatch
AtomicInteger
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
ThreadLocal

BlockingQueue 都有哪些方法

header 1 header 2 3
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
offer 添加一个元素并返回true 如果队列已满,则返回false
poll 移除并返问队列头部的元素 如果队列为空,则返回null
peek 返回队列头部的元素 如果队列为空,则返回null
put 添加一个元素 如果队列满,则阻塞
take 移除并返回队列头部的元素 如果队列为空,则阻塞

remove、element、offer 、poll、peek 其实是属于Queue接口。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 该文章转自:http://blog.csdn.net/evankaka/article/details/44153...
    加来依蓝阅读 7,380评论 3 87
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 2,986评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,493评论 1 15
  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 4,789评论 12 45
  • 作为孩童,临近生日的我们总是兴奋的。无论是物质的升华还是精神的慰藉都让我们在这对自己来说特别的一天感到欢快。 怎么...
    木之洲阅读 2,363评论 2 2