mrlonelyjtr's blog

写BUG的程序猿


  • Home

  • Categories

  • Archives

  • Tags

  • Search

【图解Java多线程设计模式】Active Object模式

Posted on 2019-02-14 | In Multithread
主动对象会通过自己特有的线程在合适的时机处理从外部接收到的异步消息。 示例实现具有“生成字符串”(makeString)和“显示字符串”(displayString)这两种功能(可以处理两种异步消息)的主动对象。 类图 时序图 Main.java123456789101112import activ ...
Read more »

【图解Java多线程设计模式】Thread-Specific Storage模式

Posted on 2019-02-13 | In Multithread
即使只有一个入口,也会在内部为每个线程分配特有的存储空间。在Java标准类库中,java.lang.ThreadLocal类实现了该模式。 关于java.lang.ThreadLocal类ThreadLocal的实例会管理多个对象由于一个ThreadLocal的实例可以管理多个对象,所以Thread ...
Read more »

Double-Checked Locking模式的危险性

Posted on 2019-02-12 | In Multithread
Double-Checked Locking模式原本是用于改善Single Threaded Execution模式的性能的方法之一。不过在Java中使用Double-Checked Locking模式是很危险的。 Single Threaded Execution模式getInstance是syn ...
Read more »

final

Posted on 2019-02-12 | In Multithread
final字段与构建线程安全的实例使用final关键字声明的字段只能被初始化一次。final字段在创建不允许被改变的对象时起到了非常重要的作用。 final字段的初始化只能在“字段声明时”或是“构造函数中”进行。那么,当final字段的初始化结束后,无论在任何时候,它的值对其他线程都是可见的。Jav ...
Read more »

volatile

Posted on 2019-02-11 | In Multithread
volatile具有“同步处理”和“对long和double的原子操作”这两种功能。 同步处理某个线程对volatile字段进行的写操作的结果对其他线程立即可见。换言之,对volatile字段的写入处理并不会被缓存起来。 123456789101112131415161718192021222324 ...
Read more »

synchronized

Posted on 2019-02-11 | In Multithread
synchronized具有“线程的互斥处理”和“同步处理”两种功能。 线程的互斥处理如果程序中有synchronized关键字,线程就会进行lock/unlock操作。线程会在synchronized开始时获取锁(lock),在synchronized终止时释放锁(unlock)。 进行lock/ ...
Read more »

可见性

Posted on 2019-02-11 | In Multithread
假设线程A将某个值写入到了字段x中,而线程B读取到了该值。称其为“线程A向x的写值对线程B是可见的”。“是否是可见的”这个性质就称为可见性。在单线程程序中,无需在意可见性。这是因为,线程总是可以看见自己写入到字段中的值。但是,在多线程程序中必须注意可见性。这是因为,如果没有使用synchronize ...
Read more »

重排序

Posted on 2019-02-11 | In Multithread
所谓重排序,是指编译器和Java虚拟机通过改变程序的处理顺序来优化程序。实际上,在运行单线程程序时无法判断是否进行了重排序。这是因为,虽然处理顺序改变了,但是规范上有很多限制可以避免程序出现运行错误。但是,在多线程程序中,有时就会发生明显是由重排序导致的运行错误。 示例在Java内存模型中,是有可能 ...
Read more »

java.util.concurrent包与线程同步

Posted on 2019-02-02 | In Multithread
java.util.concurrent.CountDownLatch类当想让某个线程等待指定的线程终止时,可以使用java.lang.Thread类的join方法。但是,由于join方法可以等待的只是“线程终止”这个一次性的操作,所以无法使用它实现“等待指定次数的某种操作发生”。使用java.ut ...
Read more »

中断状态与InterruptedException异常的相互转换

Posted on 2019-02-02 | In Multithread
当interrupt方法被调用后,线程就可以被中断了。中断线程这个行为会带来一下结果之一。 (1) 线程变为“中断状态”:反映为“状态”(2) 抛出“InterruptedException异常”:反映为“控制” 通常情况下会是结果(1);当线程正在sleep、wait、join时会是结果(2)(这 ...
Read more »
1…606162…78
mrlonelyjtr

mrlonelyjtr

间歇性踌躇满志,持续性混吃等死

780 posts
18 categories
18 tags
Github
© 2020 mrlonelyjtr
Powered by Hexo
Theme - NexT.Pisces