Java 并发
http://ifeve.com/concurrenthashmap/
对于同步方法,锁是当前实例对象。
对于静态同步方法,锁是当前对象的Class对象。
对于同步方法块,锁是Synchonized括号里配置的对象。
https://www.cnblogs.com/shoshana-kong/p/10551952.html
https://www.cnblogs.com/shoshana-kong/p/10551952.html
https://www.cnblogs.com/skywang12345/p/3344137.html
format(String format, Object... args);
转换符 说明 示例
%s 字符串类型 “mingrisoft”
%c 字符类型 ‘m’
%b 布尔类型 true
%d 整数类型(十进制) 99
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 99.99
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的)
%h 散列码
%% 百分比类型 %
%n 换行符
%tx 日期与时间类型(x代表不同的日期与时间转换符
整形包括: int,long
//定义TimerTask;
private class StateTimerTask extends TimerTask {
@Override
public void run() {
//do something
}
}
//定义Timer
mTimer = new Timer();
//入队列
mTimer.schedule(task = new StateTimerTask(), delay);
//task.cancle(); //取消队列, 后面不能再重复添加task这个来schedule,要重新new TimerTask才行
//mTimer.cancle(); //取消定时器 , 后面不能再使用这个定时器进行schedule了
public interface Iterator
public interface Iterable
public interface Collection
AbstractCollection 集合的类化,抽象类: 有添加删除特性的抽象类
public abstract class AbstractCollection
需要实现:
public boolean add(E object) {throw}
迭代接口iterator(); (实例化一个实现接口Iterator
public abstract int size();
public interface List
接口重写:add、clear
public void add(int location, E object);
public E get(int location);
public int indexOf(Object object);
public int lastIndexOf(Object object); //最后一次出现的index
public ListIterator
public ListIterator
public E set(int location, E object);
public List
public interface ListIterator
除了add hasNext remove 添加了hasPrevious nextIndex(); previous previousIndex(); set(E object); 等操作
public abstract class AbstractList
集Collection和List于一身的抽象List类
public class ArrayList
Object[] array; 数组进行存储元素
public class Vector
RandomAccess, Cloneable, Serializable {
………………………………..
public class LinkedList
List
…………………………………
Map接口 public interface Map<K,V> 包含k-v 对的集合
Key为int型的Map时使用.
android希望我们用SparseArray在一些情况下代替HashMap来使用,因为它有更好的性能
put(int key, E value);
get(int key); //E value
get(int key, E valueIfKeyNotFound)
delete(int key)
removeAt(int index)
keyAt(int index) //int key; 通过index得到该index位置的key
valueAt(int index)
//按照添加顺序, 遍历key,然后再得到value
SparseArray<E> sparseArray = new SparseArray<>();
for(int i = 0; i < sparseArray.size(); i++) {
int key = sparseArray.keyAt(i);
E value = sparseArray.get(key);
}
//按照添加顺序, 直接遍历value;
SparseArray<E> sparseArray = new SparseArray<>();
for(int i = 0; i < sparseArray.size(); i++) {
E value = sparseArray.valueAt(i);
}
据key-value中的value类型不同,android又给封装了SparseIntArray, SparseBooleanArray, SparseLongArray等等,
使用方法和SparseArray都大同小异,只要你会使用Map,那么你就会使用SparseArray。
Binder通信是一种类似于IPC 的机制,基于C/S通信结构,它是给servicemanager-server、server-client之间通信的工具,下面简单介绍具体实现原理: