- 浏览: 355747 次
- 性别:
- 来自: 沈阳
最新评论
-
sanrenxing_1:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
极光推送(JPUSH)--- 消息推送 -
QuarterLifeForJava:
如果带有中文路径的话要写为:
URLDecoder.decod ...
获取类根路径及jar包路径 -
whyxy007:
请问楼主放上去的这张图就是最后需要安装的所有的包吗?还是说需要 ...
cordova 开发环境搭建
文章列表
在一个类A内部定义类B, B是非static类,那么B叫做非静态内部类,A叫做B的外部类。
在一个类A内部定义类C, C是static类,那么C叫做静态内部类,A叫做C的外部类。
非静态内部类B:
1在外部类A非静态方法中可以直接实例化内部类B.
2.内部类B可以直接访问外部类A的属性(成员变量)或方法。
3.其它类D引用内部类B的语法 A.B b=A实例.new B(); //前提是B对于D是可见的。
4. 内部类B内部默认持有外部类实例的引用: 外部类A.this 。 一个外部类A实例 new出来的多个B实例,那么所有B实例共享这个 ...
Collection
- 博客分类:
- JAVA-容器
Collection 定义了可装载元素的容器。
List,Set,Queue是它的子类。
JAVA API 方法:
boolean
add(E e) 确保此 collection 包含指定的元素(可选操作)。
boolean
addAll(Collection<? extends E> c) ...
Queue
可装载元素的容器,提供了添加元素,移出队列头元素,检查队列头部是否有元素等方法。
抛出异常
返回特殊值
插入
add(e)
offer(e)
移除
remove()
poll()
检查
element()
peek()
Queue 子类:
Queue 方法:
boolean
add(E e) 将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
...
List
装载元素的有序容器,List内的元素可以重复,可以通过位置定位到每一个元素或将某一元素插入到固定位置。
List 子类:
List 的选择:
单线程下:
任意方式读取遍历,但只从队列尾部添加,从尾部开始删除,就用ArrayList, (添加到中间或从中间删 除需要重建数组,添加的元素量过大时,不断超过容量,也需要重建数组,最指定容量大小)。
任意位置添加删除,遍历时仅使用迭代器,就用LinkedList。
多线程下
(如果允许,最好使用:ConcurrentLinkedQue ...
Set
内部元素 无序的,不可重复元素的 collection
API:
boolean
add(E e) 如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
boolean
addAll(Collection<? extends E> c) 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。
void
clear() 移除此 set 中的所有元素(可选操作)。
boolean
contain ...
Map
表示键与值的一对一关系,键不允许重复。通过键可以快速找到值。
API:
方法摘要
void
clear() 从此映射中移除所有映射关系(可选操作)。
boolean
containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
boolean
containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。
Set<Map.Entry<K,V>>
entrySet ...
类的定义:
[public|default] [abstract|final] class 类名 [extends 父类] [implements 接口1[,接口2[,接口n]]]{
[{初始代码块}]
[static{静态初始化代码块}]
//零个或多个构建器
[public|protected|private|default] 类名 (参数类型 参数值[,参数类型 参数值]){
[this([参数值])|super([参数值])]
方法体
}
//零个 ...
基本数据类型:
(明文书写的整型数据,默认类型为int)
byte:1个字节(8位),表示数据范围:-128(负的2的7次方)至127(2的7次方减1), 最高位 1表示负数 0表示正数。
默认值为0。包装器类型:Byte。
书写格式: byte x = 12;(该值 ...
自定义ClassLoader
- 博客分类:
- JAVA-基础
个人学习笔记,如有错误欢迎指正。。
Java ClassLoader用于加载Class文件生成Class对象。
jvm 默认启动的ClassLoader:
1.Bootstrap 引导类加载器 java_home/jre/lib下的固定的几个jar包,如rt.jar 等
2.sun.misc.Launcher$ExtClassLoader 扩展类加载器 加载 java_home/jre/lib/ext/下(java.ext.dirs参数指定目录下)的所有jar
3.sun.misc.Launcher$AppClassLoader 系统类加载器 加载Clas ...
CyclicBarrie
- 博客分类:
- JAVA-多线程
个人学习笔记,如有错误欢迎指正。。
CyclicBarrier 类用于阻塞一个或多个线程,等待其它线程完成任务,直至所有线程都完成各自的任务,才会解除阻塞继续执行。
构建器 CyclicBarrier (int n,Runnable runnable)
await()方法被调用时,计数器N减一,如果计数据N>0,则当前线程阻塞,如果计数器N==0时,则 Runnable 被调用, Runnable 执行完成后,所有因为await()方法阻塞的线程被唤醒。N被再次重置为初始值,这个 CyclicBarrier 可以被再次复用。
示例:计 ...
个人学习笔记,如有错误欢迎指正。。
Exchanger 用于两个线程之间进行数据或对象交换(通信),是线程安全的。
方法:
public V exchange(V x)
A线程调用该方法时阻塞,直至另外一个线程B调用同一个Exchanger实例 的exchange方法,
B线程的exchange方法获取A线程的调用参数,并唤醒A线程,再返回A线程的调用参数,继续执行
A线程被唤醒并exchange方法返回B线程的调用参数,再继续执行。
这就完成两个线程间数据的交换,并是线程安全的。
两个以上线程之间使用 exchange交换,不能确定哪 ...
信号量Semaphore
- 博客分类:
- JAVA-多线程
个人学习笔记,如有错误欢迎指正。。
信号量Semaphore ,一般用于限制对某些资源固定数量的访问。
Semaphore维护了N个的许可,某线程通过acquire()获取一个许可或acquire(int permits) 获取多许可,如果许可数量N大于线程要求的许可数,线程得到许可并可以继续执行。
否则线程阻塞,等待某线程释放许可。
某线程释放许可,许可数量增加并唤醒被阻塞的线程,阻塞线程唤醒后再试着获取许可,获取成功则继续执行否则再次阻塞。
Semaphore内部使用AbstractQueuedSynchronizer
方法:
void
a ...
AtomicReference
- 博客分类:
- JAVA-多线程
个人学习笔记,如有错误欢迎指正。。
AtomicReference 提供了原子的方式更新对象引用。用于多线程之间。
对象的引用赋值本身就是原子的。
如:共享变量Object o ;
线程A 执行 :o = "x";//原子的线程安全
线程B 执 ...
个人学习笔记,如有错误欢迎指正。。
一 线程池的介绍
如果需要线程来执行的任务,可以使用 new Thread 来创建线程,Thread.start()方法执行线程,线程执行完之后,不可再利用。还有其它任务需要线程来执行,需要重复上述步骤。
这样就形成,一个任务创建一条线程来执行,对于大量任务来说,频繁创建和销毁线程都需要耗费系统资源,这种情况可以使用线程池来提升性能减少开销。
线程池中的线程创建完成后,可以重复的执行不同的任务(Runnable或Callable),实现了线程的重复利用,减少了创线程的数量。
...
CountDownLatch
- 博客分类:
- JAVA-多线程
CountDownLatch 用于阻塞一条或多条线程,直至其它线程把工作完成。
构那建器:
CountDownLatch(int count);count为计数器
方法:await()
调用await方法的线程在计数器=0前一直阻塞,除非线程被中断。
countDown()
将计数器count-1,如果计数到达零,则唤醒因为调用await方法而阻塞的所有的线程。
调用完countDown()方法后线程会继续执行。
一般用于一个线程或多个线程 ,等待其它线程完成count个工作,才继续 ...