外贸网站建设网,合肥网站设计公,查服务器ip地址,wordpress列表页怎么加关键词java多线程基本面试题 目录 前言 一、创建多线程的方式有哪些#xff1f; 二、runable接口和callable接口有什么区别#xff1f; 三、run和start有什么区别#xff1f; 四、线程的状态之间是如何变化的#xff1f; 五、新建T1、T2、T3如何保证他们的顺序执行#xff1f; … java多线程基本面试题 目录 前言 一、创建多线程的方式有哪些 二、runable接口和callable接口有什么区别 三、run和start有什么区别 四、线程的状态之间是如何变化的 五、新建T1、T2、T3如何保证他们的顺序执行 六、notify()和notifyall有什么不同 七、wait和sleep有什么异同 8.如何停止一个正在运行的线程 2.读入数据 总结 前言 多线程基本面试题上,多线程的创建、状态、方法全方面面试题总结 一、创建多线程的方式有哪些
1.继承thread类重写run方法
2.实现runable接口重写run方法
3.实现callable接口重写call方法将实例化的对象交给Furntask进行管理
4.线程池创建线程对象 二、runable接口和callable接口有什么区别
1.runable接口没有返回值
2.callable接口call方法有返回值返回值为泛型和FutureTask配合获取异步执行结果
3.callable接口call方法可抛出异常runable的run方法只能内部消化不可以上抛 三、run和start有什么区别
1.start表示开启线程通过线程的对象调用run方法中的逻辑代码只能调用一次
2.run方法封装被线程执行的代码可以调用多次 四、线程的状态之间是如何变化的
1.创建对象-新建状态
2.start-可执行状态就绪
3.获取CPU执行结束-终止状态
4.可执行状态中没有获得锁-阻塞状态
5.可执行状态中wait-等待状态
6.可执行状态中sleep-计时等待状态 五、新建T1、T2、T3如何保证他们的顺序执行
可以使用插入线程在T3中使用T2.join在T2中使用T1,.join来保证线程的顺序执行 六、notify()和notifyall有什么不同
notify是唤醒随记一个wait线程
notifyall是唤醒所有wait线程 七、wait和sleep有什么异同
1.wait和sleep都是让当前线程放弃CPU的执行权
2.sleep是Thread的静态方法wait是Object的成员方法每个对象都有
3.sleep(long)和wait(long)会在等待时间结束后醒来wait(long)和wait()可以被notify唤醒
4.都可以被打断唤醒
5.wait方法调用必须先获取到wait对象的锁sleep不用 wait方法执行后会释放对象的锁 sleep在sychronized代码块中执行不会释放锁 八、如何停止一个正在运行的线程
1.使用一个退出标致如flag使线程正常退出
2.使用stop方法强行退出不推荐
3.使用interrupt中断线程 1打断为阻塞线程sleep、wait、join等会抛出interruptedException异常 2打断正常的线程根据打断状态标记的状态来退出线程 总结 多线程的创建方式对其run、start、sleep和notify等方法的全方面面试题进行总结。