java 并发集合-爱代码爱编程
1 拾遗增补 1.1 线程状态 名称 条件 NEW 至今尚未启动的线程 RUNNABLE 正在Java虚拟机中执行的线程 BLOCKED 受阻塞并等待某个监视器锁的线程 WAITING 无限期地等待另一个线程来执行某一特定操作 TIMED WAITING 等待另一个线程来执行,取决于指定等待时间的操作的线程 TERMINATE
代码编织梦想
1 拾遗增补 1.1 线程状态 名称 条件 NEW 至今尚未启动的线程 RUNNABLE 正在Java虚拟机中执行的线程 BLOCKED 受阻塞并等待某个监视器锁的线程 WAITING 无限期地等待另一个线程来执行某一特定操作 TIMED WAITING 等待另一个线程来执行,取决于指定等待时间的操作的线程 TERMINATE
1 定时器Timer 方法schedule(TimeTask task, Date time)的作用是在指定的日期执行一次某个任务。 public class ScheduleMethod { public static void main(String[] args) { Timer timer = new Timer();
0 线程阻塞、挂起与睡眠 状态 说明 挂起 一般是主动的;不释放CPU,可能释放内存,放在外存;会释放锁 阻塞 一般是被动的;释放CPU,不释放内存;不会释放锁; 休眠 一般是主动的;一般会释放CPU,也可能占着CPU不工作;不会释放锁; 表 线程挂起、阻塞和睡眠的特点 1 锁的种类 图 java锁类别 悲观
1 wait/notify机制 1.1 机制原理 拥有相同锁的线程才可以实现wait/notify机制。它们都是Object类中的方法。wai使线程暂停运行,而notify通知暂停的线程继续运行。 wait是使执行该方法的线程进行等待,在wait()所在的代码处暂停执行,并释放锁,直到接到通知或被中断为止。 notify()也要在同步方法或同步块中
记得上次阿里二面的时候就问了抽象类和接口的问题,当时回答的不太全面.这次又学到了,就做一个比较详细的总结. 一.抽象类与接口的定义 抽象类与接口都是java中一种更高层次上的抽象. 抽象类:我们用abstract关
能有此文十分感谢《Java编程思想》一书及其作者Bruce Eckel! 三、中断 正如你所想象的,在Runnable.run()方法的中间打断它,与等待该方法达到对cancel标志的测试,或者到达程序员准备好离开该方法的其他一些地方相比,要棘手的多。当你打断被阻塞的任务时,可能需要清理资源。正因为这一点,在任务的run()
能有此文十分感谢《Java编程思想》一书及其作者Bruce Eckel! 首先,先观察一个示例,它不仅演示了终止问题,而且还是一个资源共享的示例。 一、装饰性花园 在这个仿真程序中,花园委员会希望了解每天通过多个大门进入公园的总人数。每个大门都有一个某种形式的计数器,并且任何一个计数器值递增时,表示公
继承,封装,多态是面向对象程序设计中的三大特性.其实从某种程度上讲继承和封装都是在为多态做准备,下面我们来了解多态这个重要的概念及其实现原理. 一.什么是多态 所谓的多态就是指允许不同类的对象对同一消息做出响应。即同一消
能有此文十分感谢《Java编程思想》一书及其作者Bruce Eckel! 五、临界区 有时,只是希望防止多个线程同时访问方法内部的部分代码而不是防止访问整个方法。通过这种方式分离出来的代码段被称为临界区(critical section),它也使用synchronized关键字建立。这里,synchronized被用来指定某
1 并发编程准备知识 1.1 三个概念 1.1原子性 一个操作或者多个操作,要么全部执行并且执行过程不会被任何因素打断,要么就都不执行。 1.2可见性 当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能立即看得到修改的值。 1.3有序性 程序执行的顺序按照代码的先后顺序执行。 1.2 指令重排序 一般来说,处理器为了提高程
1 分析线程的工具 1.1 visualVM JDK自带,监控工具在bin/jvisualvm.exe,能监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 自动显示当前本机所运行的Java程序,还可添加远程的Java VM。 2 停止线程 2.1
主要包含常用的排序、取某个属性list、按照属性分组、过滤集合、list转map重复key覆盖、获取最大最小值及平均数、获取基本类型的和、获取Bigdecimal求和、对基本集合去重、对集合中相同属性进行计数、集合排序、倒叙
1 枚举 1.1 实现,而非继承 所有的enum都继承自java.lang.Enum类,由于Java不支持多重继承,所以enum不能再继承其他类。 然后,在创建一个新的enum时,可以同时实现一个或多个接口: public class EnumTest { interface Car { void driver();
文章目录 1.数字转百分比形式2.数字转货币形式 1.数字转百分比形式 NumberFormat.setMinimumIntegerDigits(int)。设置数的整数部分所允许的最小位数。NumberF
前言 最近打算重新学习一下java编程思想,通过命令行执行第一个代码就出问题了,javac和java -version都是正常的,java命令会报错 错误: 找不到或无法加载主类 HelloDate 一、本地配置 综合观察下来应该是jdk的环境的配置有问题,本地配置的jdk环境如下 二、解决方案 具体操作:在classpath前添加
class Parent{ private void f(){ System.out.println("this is Parent"); } } class Child extends Parent{ public void f(){ System.out.println("this is Child"); } } public
多态(上)基本讲解了很多多态的特性和问题。下面继续。 1)构造器和多态 这个问题其实前面写过了,构造器实际上是static方法,只不过是隐式声明,所以构造器并没有多态性。 但是需要知道加载的顺序。 class GrandFather{ GrandFather(){ print(); } pr
多态在域的问题上是特殊的。我理解不了中文版的书直接叫域,看了英文原版,原版写的是fields,直接翻译虽然没错,但是出问题的变量不是域。特地查了what is the meaning of field in java?很多人把它看成是由花括号括起来的一个范围。其实框架里面也有一种东西——domain model,这个也叫域,域模型。 然后找到这篇文
上一章,Java编程思想(四) —— 复用类里面讲到了向上转型,感觉和多态放在一起写更好。 多态,polymorphism。一个重要的特性,篇幅太长了,分上下两篇写。 (1)向上转型 class TV{ public static void show(TV tv){ System.out.println("T
文章目录 认识Java支持脚本语言的意义Java对JavaScript的支持Rhino/Nashorn概述Nashorn的目的 实践操作HelloWorld执行脚本文件代码脚本语言使用Java的变量执行脚本方法/