java基础
junjianzhang
这个作者很懒,什么都没留下…
展开
-
用PriorityBlockingQueue简化线程优先级调度策略
我们只需要把放入该队列的对象实现Comparable接口就可以轻松实现线程优先级调度了。 下面写一个简单的demo帮助理解吧。 背景:一个车站,有固定车位,有一个出站口。我们知道车站有快车慢车,长途短途等之分。在此我们统一简化为出站优先级,出站顺序根据站内车优先级别排列。 Java代码 import java.util.concurrent.Priorit转载 2015-04-14 20:51:12 · 511 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别??
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常转载 2015-04-30 19:10:59 · 294 阅读 · 0 评论 -
Java读写文件的几种方法
1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 import java.text.SimpleDateFormat;转载 2015-04-30 18:45:06 · 428 阅读 · 0 评论 -
eclipse里关联查看android源码
一、获取android源码资源。 这里指java源文件,一般十几兆左右,不是网上那种几个G的andorid sdk源码。 有两种途径:1) 、从google或者百度搜索你需要的api版本的源码资源,一般是zip或者jar格式的。 2)、通过eclipse里面升级sdk版本时,会有一个选项下载resources。 最后一项,勾选时,就会把java源码转载 2015-04-25 13:15:50 · 285 阅读 · 0 评论 -
HashMap和HashSet的区别
HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Serve)。 首先让我们来看原创 2015-04-16 19:06:23 · 450 阅读 · 0 评论 -
Java 多线程线程池 - 线程池原理(2)
线程池能够复用线程,减少线程创建,销毁,恢复等状态切换的开销,提高程序的性能。一个线程池管理了一组工作线程,同时它还包括了一个用于放置等待执行的任务的队列。 ThreadPoolExecutor类中定义了一些与线程状态与活动线程数相关的一些变量,如下: [java] view plaincopyprint? private final At转载 2015-04-16 16:49:47 · 512 阅读 · 0 评论 -
Java 多线程线程池 - 线程池原理(1)
来看一下线程池的框架图,如下: 1、Executor任务提交接口与Executors工具类 Executor框架同java.util.concurrent.Executor 接口在Java 5中被引入。Executor框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。Executor存在的目的是提供一种将"任务提交"与"任务如何运行"分离开来的机制。定义如下转载 2015-04-16 16:50:43 · 349 阅读 · 0 评论 -
Java 多线程 - 线程的取消与关闭
Java没有一种安全的抢占式方法来停止线程,只有一些协作式机制。其中一种协作机制能设置某个“已请求取消”标志,而任务将定期查看该标志。如果设置了这个标志,那么任务将提前结束。举例如下: [java] view plaincopyprint? public class PrimeGenerator implements Runnable {转载 2015-04-16 15:32:24 · 2390 阅读 · 0 评论 -
Java 基础 - 强引用、弱引用、软引用、虚引用
转载请注明出处:http://blog.csdn.net/mazhimazh/article/details/19752475 1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: [java] view plaincopyprint?转载 2015-04-16 14:38:26 · 207 阅读 · 0 评论 -
Java 多线程线程池 - Callable和Future
Callable接口代表一段可以调用并返回结果的代码;Future接口表示异步任务,是还没有完成的任务给出的未来结果。所以说Callable用于产生结果,Future用于获取结果。 Java 5在concurrency包中引入了java.util.concurrent.Callable 接口,它和Runnable接口很相似,但它可以返回一个对象或者抛出一个异常。 C转载 2015-04-16 15:52:11 · 400 阅读 · 0 评论 -
Java 多线程 - CountDownLatch
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 来看一下这个类的构造方法,如下: [java] view plaincopyprint? public CountDownLatch(int count) { if (count 0) throw new转载 2015-04-16 15:58:57 · 327 阅读 · 0 评论 -
java数组与集合
1、拷贝之java.lang.System.arraycopy和java.util.Arrays.copyOf方法 Java数组的复制操作可以分为深复制和浅复制。一般对于引用类型的数组来说,需要在某些时候进行深复制。 首先来看一下两个方法实现的源代码,如下: [java] view plaincopyprint?转载 2015-04-16 14:46:36 · 394 阅读 · 0 评论 -
Fork/Join框架介绍
ForkJoinPool 是 Java SE 7 新功能“分叉/结合框架”的核心类,现在可能乏人问津,但我觉得它迟早会成为主流。分叉/结合框架是一个比较特殊的线程池框架,专用于需要将一个任务不断分解成子任务(分叉),再不断进行汇总得到最终结果(结合)的计算过程。比起传统的线程池类ThreadPoolExecutor,ForkJoinPool 实现了工作窃取算法,使得空闲线程能够主动分担从别的线程分原创 2016-02-15 10:45:12 · 424 阅读 · 0 评论