java学习整理20170808

来源:互联网 发布:linux查看指定进程 编辑:程序博客网 时间:2024/06/14 13:50
25.前台线程:只要还有一个前台线程在运行,程序就不会结束,即使main线程已经执行完毕
后台线程:在启动线程前调用setDaemon(true);使线程在后台运行,只有后台线程在运行,没有前台线程在执行时,整个程序就结束了;mian线程时前台线程
26.jion(10)合并线程10s后两个线程继续交替运行
27.Runnable适合需要多个线程去处理同一个资源的情况;
创建线程:Thread t=new Thread();对一个Thread子类资源只能创建一个线程
 Thread t=new Thread(new Runnable())可以对同一个Runnable资源启动多个线程
28.在wait和notify的被调用时,必须用同步块中的被锁对象来调用
29.线程安全的类:在某个类中,已经进行过同步处理,外部在调用该类进行多线程操作的时候,不需要再对这个类进行同步处理
30.线程生命周期的控制:stop(过时了),suspend,(过时了);
应该通过一个标识符flag变量(控制线程结束,初始化为false标识未结束),再提供一个外部接口函数来设置这个flag的值来控制该线程。
31.String类对象中的类容一旦被初始化就不能被改变
StringBuffer类用于封装内容可以被改变的字符串
String str="a"+4+"c";编译时等效于
String str=new SringBuffer().append("a").append(4).append("c").toString();
字符串常量实际上是一种特殊的匿名String对象
String str1="hello";String str2="hello";指向同一个对象,是完全相等的
String str1=new String("hello");String str2=new String("hello");指向不同的对象,是不相等的
String s=s+"test";StringBuffer s=s.append("test")
后者更有效率,前者会先把s转换为StringBuffer,然后再调用append方法追加test串后在调用toString方法转换会String赋值给原s
32.next() 方法返回的是指示器当前指向的对象,同时把指示器指向下一个对象
hasMoreElements方法:当指示器指向一个非空对象时返回true,否则返回false
33.Vector类和ArrayList类的区别
Vector类里的方法都是线程同步的,是安全的,但是即使只有一个线程在运行,它也在维护这个同步,有额外的开销;
ArrayList类的方法都是非线程同步的,是不安全的,若只有一个线程在运行的话,使用ArrayList效率更高,;但在多线程中,ArrayList需要程序员自己来维护线程同步
34. StringBuffer类不能用作hash关键字类,它没有重写hashCode()方法...
35.HashTable在调用get(key)时中间过程会调用equals方法,注意重写
36.Sytem类
exit退出程序(强制的,异常退出)
currentTimeMillis方法记录相对于 1970/01/01/00:00:00的时间值;返回的是一个long类型的值
37.Calendar类:解决了Date类不能实现时间国际化的问题
它是抽象的基类,需要getInstance静态方法实例化,返回值是Calendar类对象,实际上是返回了一个GregorianCalendar类,也就是Calendar的唯一子类
38.抽象类DateFormat在需要使用时,需要使用它的子类SimpleDateFormat来实现日期的格式转换
39.TImer.schedule(TimerTask,time):在time时间后启动线程TimerTask
class MyTimerTask extends TimerTask {
run();
}
Timer tm=new Timer();
tm.schedule(new MyTimerTask(tm), 10000);
40.File类:文件本身信息(属性)Unix路径用‘/’,Dos用‘\’
41.RandomAccessFile类通过文件指示器,类似文件指针,以跳转到文件任意位置来读取数据,支持随机访问方式;在等长记录格式文件(很多条相同长度的记录)时很方便,用skipBytes(int pos)和see(pos)来进行跳转
rw:读写方式;r:只读方式
原创粉丝点击