重拾JAVA线程之获取另一个线程的返回

2018-03-24
阅读 9 分钟
5.4k
Java的多线程机制允许我们将可以并行的任务分配给不同的线程同时完成。但是,如果我们希望在另一个线程的结果之上进行后续操作,我们应该怎么办呢?

初探Java Socket

2018-03-18
阅读 10 分钟
3.5k
前言 本篇文章将涉及以下内容: IO实现Java Socket通信 NIO实现Java Socket通信 阅读本文之前最好了解过: Java IO Java NIO Java Concurrency TCP/IP协议 TCP 套接字 TCP套接字是指IP号+端口号来识别一个应用程序,从而实现端到端的通讯。其实一个套接字也可以被多个应用程序使用,但是通常来说承载的是一个应用程序的...

猫头鹰的深夜翻译:Volatile的原子性, 可见性和有序性

2018-03-15
阅读 4 分钟
3k
为什么要额外写一篇文章来研究volatile呢?是因为这可能是并发中最令人困惑以及最被误解的结构。我看过不少解释volatile的博客,但是大多数要么不完整,要么难以理解。我会从并发中最重要的一些因素开始说起:

猫头鹰的深夜翻译:Java中的CAS(Compare And Swap)

2018-03-14
阅读 2 分钟
1.9k
在我们深入了解CAS(Compare And Swap)策略以及它是如何在AtomicInteger这样的原子构造器中使用的,首先来看一下这段代码:

猫头鹰的深夜翻译:BlockingQueue和持续管理

2018-03-09
阅读 4 分钟
2.1k
在Java中,BlockingQueue接口位于java.util.concurrent包下。阻塞队列主要用来线程安全的实现生产者-消费者模型。他们可以使用于多个生产者和多个消费者的场景中。

猫头鹰的深夜翻译:核心JAVA并发(二)

2018-02-13
阅读 8 分钟
1.7k
发布一个对象是指该对象的引用对当前的域之外也可见(比如,从getter方法中获取一个引用)。要确保一个对象被安全的发布(即在初始化完成之后发布),可能需要使用同步。可以通过以下方法实现安全的发布:

猫头鹰的深夜翻译:核心JAVA并发(一)

2018-02-13
阅读 6 分钟
2.3k
当多个线程在一个共享的资源上执行一组操作时,会产生竞争。根据各个线程执行操作的顺序可能产生多个不同结果。下面的代码不是线程安全的,value可能会被初始化多次,因为check-then-act型(先判断是否为null,然后初始化)的惰性初始化并非原子性操作。