1.多线程的实现有几种方式?实现步骤分别是怎样的?
两种方式:1、通过继承Thread类,实现run()方法,创建子类对象,调用start()方法。
2、通过实现runnable接口,覆盖重写run()方法,创建线程传入Runnable类对象,调用start()方法。
2.继承Thread类和实现Runnable接口有啥区别?实现Runnable接口的优势体现在哪里?
Thread类封装了对象个执行方法;Runnable将执行方法抽取出来。
Runnable接口优势是解耦。
3.线程安全问题时怎么产生的?如何解决线程安全问题,有哪几种方式?
共享一个线程任务的时候,涉及到多个线程操作(修改、写的操作)一个全局的或者静态的资源数据的时候会发生,数据不符合预期,数据错误。
使用同步代码块、和同步方法;
4.sleep()方法和wait()方法的区别?
sleep不释放锁,wait()释放锁
5.线程有几种状态?他们之间是如何转化的?
新建状态 new
运行状态 Runnable
阻塞状态 blocked
无限等待期 waiting
计时休眠期 time_waiting
死亡状态 terminated
新建后去抢占锁资源,如果抢到进入运行状态,没有抢到的进去阻塞状态
lijionghua |