Io:
Java的输入输出功能来自于java.io包中的InputStream类、OutputStream类,Reader类和Writer类以及继承他们的各种子类。(前两者操作字节流,后两者操作字符流)
线程:
线程也是一种对象,继承Thread类和实现Runnable借口的方式都可创建线程。
Thread类中常用的方法包括start(),run(),join()等方法。
Runnable接口只有一个run()方法,实现后一般要重写掉。
因为java只允许单一继承,所以如果已经继承了其他类,只能用Runnable接口的方式来实现线程。当一个run()方法体现在继承Thread类中,用this指向实际控制运行的Thread类实例,因此,代码无需如下控制:Thread.currenThread().sleep(),而可以简单地使用:Thread.sleep()。继承Thread类使代码变得简单易读。
sleep() 和 wait() 有什么区别?
答案:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间(休息),把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,时间到了会继续运行。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
线程的生命周期:创建—可执行—非可执行—消亡
1、创建,指的是当实例化一个Thread对象并执行start()方法之后,线程进入可执行状态。
2、可执行,在这种状态下,线程可能被执行完,也可能被处于等待执行的队列。可以用Thread类中的wait()、sleep()方法进入非可执行状态
3、非可执行,可以通过notify()、notifyAll()以及interrupt()方法进入可执行。
4、消亡,在run()方法执行完毕后,线程自动消亡。Stop()方法可以强制消亡,但是会导致线程稳定,现在基本被废弃。
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
多线程容易产生死锁。
JAVA类实现序列化的方法?在collection中,实现比较要实现什么样的接口?写个例子
答案:java类实现序列化需要实现java.io.Serializable接口。
在collection中实现比较要实现Comparable接口或Comparator接口。