io流常见的面试题

  • 对象序列化是什么, 用在声明场景?

java的对象序列化是为了保存各种对象在内存中的状态,兵器保存的对象通过反序列化再读出来,需 要被序列化的对象是要求要实现java.io.Serilizable接口。

比如通过操作对象的流(ObjectInputStream ,ObjectOutputStream),把对象写入到文件中。可以从 文件中把对象读取出来。

使用场景:

  • 把内存中的对象的状态保存到文件中或者数据库中。

  • 网络上(Socket)传输对象的时候

  • 想通过RMI(远程方法调用)传输对象的时候

  • transient关键字的作用?

transient是java中的关键字,被它修饰的属性,不会被序列化。

  • 写出10个常见的异常类型

1.NullPointerException 2. IOException 3. ClassCastException 4. EOFException 5. NumberFormatException 6. FileNotFountException 7. NoSuchMethodException 8. SocketException 9. SQLException 10. IndexOutOfBoundsException

  • 集合有哪些?

1.Coolection接口的子类包含: Set接口和List接口.

2.Map接口的实现类: HashMap ,TreeMap , Hashtable, ConcurrentHashMap以及 Properties

3.Set接口: HashSet , TreeSet , LinkedHashSet等

4.List接口: ArrayList(每次扩容50%) , LinkedList , Stack 以及Vector等。

线程

java程序支持多线程,并且java中的多线程处理较为简单。一般操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序被称为进程,当程序运行时候,内部可能包含多个孙旭流执行,每个顺序执行就是一个线程。

Thread类代表线程类型;任何线程对象都是Thread类的实例;Thread类是线程的模版(封装了复杂的线程开启等操作,封装了操作系统的差异性等);只要重写run方法(即子类的对象),通过start方法,启动线程,线程启动之后,会尽快执行run方法。

3.1继承Thead类

创建一个类,继承Thread类,重写run方法,实现用户自己的过程,创建线程实例(即子类的对象),通过start方法,启动线程,线程启动之后,会尽快执行run方法

 public static void main(String[] args) {
        Thread t1=new Mytheard();
        Thread t2=new Anthor();
        //启动线程:start方法,启动线程,然后线程会自动调用自己的run方法
        t1.start();//表示线程进入到:runnable状态,即可运行状态。这个时候如果cpu分配了时间片,然后线程就调用了run方法。
        t2.start();
    }
}
class Mytheard extends Thread{
    //通过重写run方法,设置线程的功能
​
    @Override
    public void run() {
       // super.run();
        System.out.println("hello");
​
    }
}
class  Anthor extends Thread{
    @Override
    public void run() {
        //super.run();
        System.out.println("你好");
    }
}

3.2通过Runnable接口,创建线程

创建一个类,实现Runnable接口, 重写run 方法 以实现了Runnable接口的类的实例,作为创建Thread类的参数。

class A1 {
    void pint(){
        System.out.println("25561261");
    }
}
​
class  B2 extends A1 implements Runnable{
    int k;
    void pint(){
        System.out.println("*******");
    }
    @Override
    public void run() {
    Thread t=Thread.currentThread();//获取当前进程
        System.out.println(t.getName()+"----"+t.getId());
        int s=0;
        for (int i=1;i<=100;i++){
            s+=i;
        }
        this.k=s;
    }
}

线程的状态

 

sleep方法

Thread.sleep(times) 使当前线程从running放弃处理器,进入block状态,休眠times毫秒,再进入 runnable状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值