Java 泛型
泛型的本质是参数化类型。
泛型标记符
- E element集合中元素
- T type
- K key
- V value
- N number
- ?不确定
泛型方法
调用时可接收不同类型的参数。
// 泛型方法 printArray
public static < E > void printArray( E[] inputArray )
{
// 输出数组元素
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
泛型类
public class Box<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
类型通配符
List<?>
上限 List<? extends Number>
下限 List<? super Number>
Java序列化
一种将对象转化为字节流的过程。
Java多线程
一个进程中可以并发多个线程。
生命周期
新建状态
就绪状态
运行状态
阻塞状态
死亡状态
创建
- Runnable接口
public class RunnableDemo implements Runnable {
private Thread t;
private String threadName;
RunnableDemo(String name){
threadName= name;
System.out.println("Creating " + threadName);
}
public void run(){
System.out.println("Running " + threadName);
try{
for(int i = 4; i>0; i--){
System.out.println("Thread: "+ threadName + i );
//让线程睡眠一会
Thread.sleep(50);
}
}catch(InterruptedException e){
System.out.println("Thread "+threadName+" interrupted.");
}
System.out.println("Thread "+threadName+" exiting.");
}
public void start(){
System.out.println("Starting "+ threadName);
if (t==null){
t=new Thread(this,threadName);
t.start();
}
}
//每次执行结果并不相同
//这种行为是多线程程序的一个典型特征,称为线程的非确定性或并发性,
//即你不能预测线程执行的具体顺序,除非在程序中明确地进行了控制(如使用线程同步机制等)。
public static void main(String[] args){
RunnableDemo R1 = new RunnableDemo("Thread_First");
R1.start();
RunnableDemo R2 = new RunnableDemo("Thread_Second");
R2.start();
}
- 继承Thread类
- Callable 和 Future
线程
线程同步
线程间通信
线程死锁
线程控制:挂起、停止、恢复