
JAVA
文章平均质量分 75
自由不死
率性而行,适情而止
展开
-
第五部分 给程序添加退出事件
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745java.lang.Runtime类提供了一个addShutdownHook()方法。添加虚拟机关闭钩子。有以下用途:① 应用程序正常退出。在退出时只需特定的业务逻辑。② 虚拟机非正常退出,如用户按下“Ctrl+C”组合键,操作系统关闭。在退出时候执行必要的挽转载 2013-12-19 23:14:11 · 789 阅读 · 0 评论 -
以Android环境为例的多线程学习笔记(一)------- 线程的创建
多进程和多线程的本质区别在于其实每一个进程都拥有自己的一整套变量,说白了,可以拥有各种资源,而线程则是共享数据的,同时也正是因为共享数据从而使得在线程之间的通信要比在进程之间的更有效、更容易。由与我近段时间在学些Android所以本部分的代码都以Android开发环境为基础,但其实这本质也就是JAVA中的多线程,两者是没有太大区别的:首先Thread类就是线程类,可以用它来创建一个新的原创 2013-12-15 22:17:06 · 1418 阅读 · 0 评论 -
以Android环境为例的多线程学习笔记(四)----------Callable与Future
在JAVA的多线程机制中,Runnable接口可以用来封装一个异步运行的任务,但是它相当于是一个没有参数类型和返回值的异步方法,所以在JAVA中就又出现了callable机制,callable是一个参数化的类型接口,里面只有一个call方法,但是该方法是有返回值的,而且返回值类型就是参数类型。与callable接口相配套使用的就是Future接口,其作用就是用来保存异步运算的结果和和启原创 2013-12-21 17:15:33 · 3629 阅读 · 1 评论 -
Java编程中如何在一个数值范围内生成一个伪随机数
//出自:http://my.oschina.net/huangwenwei/blog/224138?fromerr=cHulfGx7在软件开发编程中,我们经常需要生成一个随机数值。比如在1~100的整型范围内生成一个随机数。幸运的是,由于在Java API中提供了生成随机数的类,可以通过java.util.Random类、Math.random工具方法和ThreadLocalRand转载 2016-09-02 11:02:17 · 2819 阅读 · 0 评论 -
java中的内部类总结
出自:http://www.cnblogs.com/nerxious/archive/2013/01/24/2875649.html内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而转载 2016-09-06 10:01:32 · 466 阅读 · 0 评论 -
阻塞(sleep等等)区别 中断(interrupt)+ 中断的意义
http://www.cnblogs.com/baoendemao/p/3804730.html 在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后带来的结果,那是无法确定的,有时它更是让停止中的线程继续执行的唯一手段。不但不是让线程停止运行,反而是继续执行线程的手段。 对于执行一般逻辑的线程,如果调用它的interrupt()方法,那么转载 2016-09-06 10:43:44 · 2596 阅读 · 0 评论 -
JAVA面试题复习
1、 内部类静态内部类:相当于又添加了一层命名空间限制,与外部类相互独立。成员内部类:属于外部类某一个具体对象、包含外部类对象的隐含引用。局部内部类:属于外部类某一个具体对象、包含外部类对象的隐含引用。匿名内部类:属于外部类某一个具体对象、包含外部类对象的隐含引用。2、 Java中的访问控制3、 Java中的字面量默认值原创 2017-08-02 20:00:31 · 837 阅读 · 0 评论 -
jdk1.8中HashSet与LinkedHashSet源码分析
注:基于JDK 1.8.0_131源码为例进行分析:一、HashSet分析1.1 HashSet的实现 HashSet实现set接口,是基于HashMap或者LinkedHashMap实现的。 HashSet中封装了一个 HashMap 对象(也有可能是LinkedHashMap)来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 ...原创 2018-06-11 20:08:09 · 1290 阅读 · 0 评论 -
jdk1.8中hashmap源码分析
jdk1.8中hashmap源码分析本文以JDK 1.8.0_131源代码为例进行分析:jdk1.6到1.8中hashmap的变化hashmap的实现原理数组大小及相关参数规定Hashmap的put方法实现Hashmap的get方法实现jdk1.6到1.8中hashmap的变化JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,...原创 2018-06-06 21:53:45 · 592 阅读 · 0 评论 -
Java中ConcurrentHashMap学习
ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下效率较高。hashtable在的多线程情况下,同步操作能保证程序执行的正确性。但是hashtable每次同步执行的时候都要锁住整个结构。看下图:图左侧清晰的标注出来,lock每次都要锁住整个结转载 2013-12-21 15:25:42 · 1013 阅读 · 0 评论 -
线程安全类
在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。statck:堆栈类,先进后出hashtable:就比hashmap转载 2013-12-21 14:58:10 · 1091 阅读 · 0 评论 -
以Android环境为例的多线程学习笔记(五)------------线程池
一:为什么要使用线程池?什么时候该使用线程池?主要有一下几点原因:一、创建一个新的线程是有一定的代价的;二、如果在一个程序中创建大量的线程的话,这会大大的降低程序的性能有时候甚至会导致虚拟机崩溃,所以就有必要去固定当前前程的数量以限制并发线程的数量,而线程池就刚好具有此功能,一个线程池中包含许多准备运行的空闲线程,当将任务以Runnable或Callable的对象形式交给线程池后,原创 2013-12-21 20:44:42 · 1549 阅读 · 1 评论 -
以Android环境为例的多线程学习笔记(二)-----------------锁和条件机制
现在的绝大多数应用程序都是多线程的程序,而当有两个或两个以上的线程需要对同一数据进行存取时,就会出现条件竞争,也即是这几个线程中都会有一段修改该数据状态的代码。但是如果这些线程的运行顺序推行不当的话是很容易造成死锁现象的。所以在JAVA中为了防止出现这种现象的出现就产生了锁和条件机制用来对实现各个线程之间互斥的去访问这段临界区的代码,唉!由于我也是才刚学多线程并发编程,也不可能有多深多原创 2013-12-19 23:02:26 · 1144 阅读 · 0 评论 -
第一部分 浅谈线程的状态
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745首先可以看一些关于线程的状态图有六种状态。 就这个图,我们简单的说一下管理线程的常用方法。l Thread类的构造方法:调用Thread类的构造方法之后,线程仅处于创建状态,并没有获得任何资源。l Thre转载 2013-12-19 23:08:47 · 1179 阅读 · 0 评论 -
第二部分 线程的等待和唤醒
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745从这个图中可以看出,等待状态是一种特殊的状态。使线程陷入等待实际上是暂时剥夺线程当前拥有的CPU时间片和获取CPU时间片的资格,使其返回到就绪状态。除非被唤醒,否则等待时间已满,该线程将一直等待。不会被JVM线程调度器选中并赋予CPU时间片。处转载 2013-12-19 23:10:44 · 1042 阅读 · 0 评论 -
第三部分 线程的休眠和中断
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745线程的休眠状态和就绪(包括等待)状态的不同之处在于,处于休眠状态的线程并不释放运行资源,在休眠结束后。不用等待被JVM线程调度器再度选中,而可以直接进入运行状态。结束休眠状态有两种途径:①休眠时间到达后,线程重新进入运行状态。②处于休眠状态的线程遇上j转载 2013-12-19 23:11:47 · 1272 阅读 · 0 评论 -
第四部分 线程的终止
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745对于终止运行中的线程,Thread类原本提供了一个人方法:stop();但方法已经被禁用。就目前而言,我们可以利用线程的休眠和中断机制,在子线程中有意地为调度线程安排中断机会。下面例子就是利用线程的休眠和中断机制来终止线程。【StopThread】转载 2013-12-19 23:12:52 · 766 阅读 · 0 评论 -
第六部分 线程组
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745线程组线程组是java线程编程所持有的概念。在Java中,线程组是指java.lang.ThreadGroup类的对象,每个线程都隶属于唯一的一个线程组,这个线程组在线程创建时指定并在线程的整个生命周期内都不能更改。可以通过调用包含ThreadGroup类转载 2013-12-19 23:15:28 · 756 阅读 · 0 评论 -
第七部分 线程间通信
文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745线程间通信我们所掌握的线程通信手段还只限于主线程通过唤醒,中断机制向子线程发出信号,或者在通过创建子线程时候向构造方法传入数据,以及设置子线程的公有属性。但是仅凭这些事难以胜任要求的。 在多线程开发领域,线程与线程之间需要交换信息。这是一种转载 2013-12-19 23:16:51 · 907 阅读 · 0 评论 -
以Android环境为例的多线程学习笔记(三)-----------阻塞队列
对于许多多线程的问题,其实是可以通过使用一个或多个队列以安全的方式将其形式化的,即使用队列可以安全的从一个线程向另一个线程传输数据。其中阻塞队列就是一种很有用的工具,工作者线程可以周期性的将中间结果存储在阻塞队列中,而其他工作者线程则可以移出中间结果并进行加以修改,而且在其运行的同时队列还会自动的平衡负载。-----------YYC本部分则以用阻塞队列的方式解决生产者和消费者问题原创 2013-12-20 20:38:01 · 2022 阅读 · 0 评论 -
jdk1.8中hashtable源码分析
注:基于JDK 1.8.0_131源代码为例进行分析hashtable的结构图hashtable采用桶位+链表结构实现。 hashtable的实现采用的是“桶位”,即一个Entry数组实现: Entry节点的实现:主要包括了key、value以及key的哈希值和next指向想一个节点。 说明:代码块1:为Entry节点中包含的key、value、...原创 2018-06-08 10:36:21 · 2430 阅读 · 3 评论