最近在给别人讲解Java并发编程面试考点时,为了解释锁对象这个概念,想了一个形象的故事。后来慢慢发现这个故事似乎能讲解Java并发编程中好多核心概念,于是完善起来形成了了这篇文章。大家先忘记并发编程,只听我给你讲个故事。 故事可能比较奇怪。有这么一个学校,里面有好多好多人,我们简单 ...
日志服务需要提供的功能有: 可以从外部安全地开启和关闭日志服务 可以供多个线程安全地记录日志消息 在日志服务关闭后,可以把剩余未记录的消息写入日志文件 在上面的例子中,有以下几个地方值得注意: 日志服务不应该在收到关闭消息时立即停止,而应该将消息队列中剩余的消息写入到日志文件之后再关闭。如果决定丢弃这些消息,那么应该先清空消息队列,否则调用log方法的线程会一直阻塞 上例中使用isShutdow ...
2015-11-10 17:59 0 2208 推荐指数:
最近在给别人讲解Java并发编程面试考点时,为了解释锁对象这个概念,想了一个形象的故事。后来慢慢发现这个故事似乎能讲解Java并发编程中好多核心概念,于是完善起来形成了了这篇文章。大家先忘记并发编程,只听我给你讲个故事。 故事可能比较奇怪。有这么一个学校,里面有好多好多人,我们简单 ...
最近笔者接触到串口编程,网上搜了些资料,顺便整理一下。网上都在推荐使用Java RXTX开源类库,它提供了Windows、Linux等不同操作系统下的串口和并口通信实现,遵循GNU LGPL协议。看起来不错,写个例子试试。 准备运行环境 下载RXTX RXTX下载地址是:http ...
从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server client ...
1、网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、 ...
一个最简单的Java程序有多少线程? 通过下面程序可以计算出当前程序的线程总数。 上面有两种计算线程数的方式: 1、通过java线程管理器MXBean 2、直接通过线程组获取线程总数,要注意需要获取根线程组的总数,否则不准确 注意,如果JetBrain IJ来Run这个程序 ...
概述 java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,提升性能。本文主要讨论常见的并发容器的实现机制和绝妙之处,但并不会对所有实现细节面面俱到。 为什么JUC需要提供并发容器? java collection framework提供了丰富的容器,有map ...
安全性和活跃度通常相互牵制。我们使用锁来保证线程安全,但是滥用锁可能引起锁顺序死锁。类似地,我们使用线程池和信号量来约束资源的使用, 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁。Java应用程序不能从死锁中恢复,所以确保你的设计能够避免死锁出现的先决条件是非常有价值。 一.死锁 ...
1、什么是闭锁? 闭锁(latch)是一种Synchronizer(Synchronizer:是一个对象,它根据本身的状态调节线程的控制流。常见类型的Synchronizer包括信号量、关卡和闭锁)。 闭锁可以延迟线程的进度直到线程线程到达终止状态。一个闭锁工作起来就像是一道大门:直到 ...