工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等
JDK的命令行工具JDK的bin目录中包含了很多工具
jps:虚拟机进程状况工具
功能也和ps命令类似:
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main()函数所在的类)T...
对象已死吗怎样知道某个对象是活着还是死了(不会再被引用)
引用计数算法
给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。
很简单,但Java虚拟机里面没有选用引用计数算法来管理内[...
运行时数据区域Java虚拟机所管理的内存将会包括以下几个运行时数据区域
程序计数器
一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。
字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令
每条线程都需要有一个独立的程序计...
Java发展史
1991年4月绿色计划:开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。Java语言的前身:Oak
1995年5月23日Oak语言改名为Java“Write Once,Run Anywhere”
1996年1月23日JDK1.0:
纯解释执行的Java虚拟机实现(Sun Classic VM)
Applet、AWT等
1997年2月19日
JDK1.1 :
JAR文件格式、JDBC、JavaBeans、RMI
内部类,反射
1998年12月4日JDK 1.2:
拆成3个体...
本章将给出各种实现取消和中断的机制,以及如何编写任务和服务,使它们能对取消请求做出响应。
任务取消可取消的操作 : 外部代码能在某个操作正常完成之前将其置入“完成”状态
取消某个操作的原因:
点击某个桌面应用中的取消按钮时;
某个操作超过了一定的执行时间限ԣ...
并发操作合集
🍤 并发操作合集系列 目录
🍕 并发操作合集系列 源代码
大纲
章节
源码位置
1.线程的生命周期
threadlifecycle
2.状态转换方法:wait,notify,sleep,join,yield
threadStateMethod
3.Synchronized使用指南
synchronizedKeyword
4.Lcok和Condition
lock
5.原子变量和volatile
atomicVolatile
6.并发容器:ConcurrentHashMap
concurrentMap
7.并发容器:BlockingQueue
blockingQueue
8.并发容器:CopyOnWriteArrayList
copyOnWriteArrayList
9.并发工具:Semaphore,CountDownLatch,CyclicBarrier
concurrentUtils...
🍤 并发操作合集系列 目录
🍕 并发操作合集系列 源代码
ThreadLocal的用法ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。
ThreadLocal.get: 获取ThreadLocal中当前线程共享变量的值。
ThreadLocal.set: 设置ThreadLocal中当前线程共享变量的值。
ThreadLocal.remove: 移除ThreadLocal中...
🍤 并发操作合集系列 目录
🍕 并发操作合集系列 源代码
Executor并发API引入了ExecutorService作为一个在程序中直接使用Thread的高层次的替换方案。Executos支持运行异步任务,通常管理一个线程池,这样一来我们就不需要手动去创建新的线程。在不断地处理任务的过程中,线程池内部线程将会得到复用,因此...
🍤 并发操作合集系列 目录
🍕 并发操作合集系列 源代码
这篇文章会介绍3中非常实用的并发工具,Semaphore,CountDownLatch,CyclicBarrier。
SemaphoreSemaphore可以理解为信号量,用于控制资源能够被并发访问的线程数量,以保证多个线程能够合理的使用特定资源。Semaphore就相当于一个许可证,线程需要先通过acquire方法获取该许...
🍤 并发操作合集系列 目录
🍕 并发操作合集系列 源代码
这一篇文章也会介绍一个并发容器,CopyOnWriteArrayList。
CopyOnWriteArrayListCopy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容ܓ...