随笔分类 - Java线程
摘要:比较金典的例子: import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.experimental.Acces
阅读全文
摘要:产生死锁原因: 1.系统资源不足. 2.进程运行推进的顺序不合适 3.资源分配不当 import java.util.concurrent.TimeUnit; class HoldLockThread implements Runnable { private String lockA; priva
阅读全文
摘要:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素 当阻塞队列是空,从队列中获取元素的操作将会被阻塞,直到其他线程往空的队列插入新的元素 当阻塞队列是满,往队列里添加元素的操作将会被阻塞.直到其他线程从队列中移除一个或多元素或者完全清空队列,是队列变得空闲起来才能新增. 分类: ArrayBl
阅读全文
摘要:信号量主要用于两个目的: 1.用于多个共享资源的互斥使用 2.用于并发数的控制. import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; public class SemaphoreDemo { pub
阅读全文
摘要:import java.util.concurrent.CountDownLatch; public class CountDownLatchDemo { public static void main(String[] args) throws Exception { CountDownLatch
阅读全文
摘要:import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; import
阅读全文
摘要:自旋锁:spinlock 是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环耗用CPU import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.Atom
阅读全文
摘要:import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicStampedReference; p
阅读全文
摘要:使用定时发送消息的方式,实现硬件检测,达到心态检测的目的。 心跳监测是用于检测电脑硬件和软件信息的一种技术。如:CPU 使用率,磁盘使用率, 内存使用率,进程情况,线程情况等。 4.5.1 sigar 需要下载一个 zip 压缩包。内部包含若干 sigar 需要的操作系统文件。sigar 插件是通过
阅读全文
摘要:netty 使用 tcp/ip 协议传输数据。而 tcp/ip 协议是类似水流一样的数据传输方式。多次 访问的时候有可能出现数据粘包的问题,解决这种问题的方式如下: 定长数据流 客户端和服务器,提前协调好,每个消息长度固定。(如:长度 10)。如果客户端或服 务器写出的数据不足 10,则使用空白字符
阅读全文
摘要:Netty 是由 JBOSS 提供的一个 java 开源框架。Netty 提供异步的、事件驱动的网络应用 程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于 NIO 的客户、服务器端编程框架,使用 Netty 可以确保你 快速和简单的开发出一个网
阅读全文
摘要:Asynchronous IO: 异步非阻塞的编程方式 与 NIO 不同,当进行读写操作时,只须直接调用 API 的 read 或 write 方法即可。这两种 方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入 read 方 法的缓冲区,并通知应用程序;对于写操作而言,当操作
阅读全文
摘要:Unblocking IO(New IO): 同步非阻塞的编程方式 NIO 本身是基于事件驱动思想来完成的,其主要想解决的是 BIO 的大并发问题,NIO 基 于 Reactor,当 socket 有流可读或可写入 socket 时,操作系统会相应的通知引用程序进行处 理,应用再将流读取到缓冲区或写
阅读全文
摘要:网络编程(Socket)概念 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 socket。 建立网络通信连接至少要一个端口号。socket 本质是编程接口(API),对 TCP/IP 的封装, TCP/IP 也要提供可供程序员做网络开发所用的接口,这就是 Socket
阅读全文
摘要:1. 容器 1.1. 容器类关系图 Collection 接口的接口 对象的集合 ├ List 子接口 按进入先后有序保存 可重复 │├ LinkedList 接口实现类 链表 插入删除 没有同步 线程不安全 │├ ArrayList 接口实现类 数组 随机访问 没有同步 线程不安全 │└ Vect
阅读全文
摘要:由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。 Java程序执行流程: Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀), 然后由JVM中的类加载器加载各个类的字节码文件, 加载完毕之后,交由JVM执
阅读全文
摘要:线程间通信常用方式如下: l 休眠唤醒方式: Object的wait、notify、notifyAll Condition的await、signal、signalAll l CountDownLatch:用于某个线程A等待若干个其他线程执行完之后,它才执行 l CyclicBarrier:一组线程等
阅读全文
摘要:1. ConcurrentLinkedQueue 基础链表同步队列。 LinkedBlockingQueue 阻塞队列,队列容量不足自动阻塞,队列容量为 0 自动阻塞 ArrayBlockingQueue 底层数组实现的有界队列。自动阻塞。根据调用 API(add/put/offer)不同,有不同特
阅读全文
摘要:Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现。同步方 法 并不是由 monitor enter 和 monitor exit 指令来实现同步的,而是由方法调用指令读取运 行时常量池中方法的 ACC_SYNCHRONIZED 标志来隐式实现的
阅读全文