java.3
线程
Runable接口是线程工作的内容,只有一个方法就是run() Thread创建了一个线程,start之后启动线程
public class MyRunnable implements Runnable{
public void run(){
}
}
Runnable threadJob= new MyRunnable();
Thread myThread=new Thread(threadJob);
myThread.start()
线程状态 可执行/执行中/阻塞
Thread.sleep()确保县城在一段时间内不会被唤醒
线程调用start()之后,虽然对象还是会在堆上,但是已经失去了线程的可执行性
thread.setName() Thread.currentThread().getName()
synchronized 修饰的方法叫做同步化的方法。每一个java对象都有一个锁,当对象有同步化的方法的时候,线程只有在取得要是的情况下才能进入线程。
synchronized(this){...}可以只是给部分代码块加锁
同步化会减慢程序的执行速度,也可能会导致死锁
注意可以在一个类的内部再次定义一个内部类,这个内部类只有这个类本身才能使用
集合类Collection
1,List就好像是数组一样
ArrayList 按照加入的顺序存储的
LinkedList 底层类似于链表,有大量删除插入的时候用
Vector
2,Set集合数据不能重复,顺序跟你插入的顺序没关系
Set是如何判断重复的?1,判断hashcode,hashcode一样的话在调用equals的方法判断对象是不是一样。所以有些时候你要放入Set的数据有类似于主关键字这样的限制的话,要重写这两个方法
TreeSet 自动排序(唯一的一个)所以元素必须实现Comparable接口 或者呢 写一个实现了comparator接口的类,传入到TreeSet的构造函数里面也可以
HashSet
LinkedHashSet
Map key-value key不能重复
可以用Collection.sort(List list)对List排序
泛型
class x<T>{
void xx(T t){
}
}
x xx<String>=new xx<String>;