JAVA面试题-多线程(二)
1 . 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务。 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。 并发 = 两个队列和一台咖啡机。 并行 = 两个队列和两台咖啡机。 2. 线程和进程的区别? 一个程序下至少有一个进程,一个进程下至少有一个线程,一个进程下也可以有多个线程来增加程序的执行速度。 3. 守护线程是什么? 守护线程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。在 Java 中垃圾回收线程就是特殊的守护线程。 4. 创建线程有哪几种方式? 创建线程有三种方式: 继承 Thread 重写 run 方法; 实现 Runnable 接口; 实现 Callable 接口。 5. 说一下 runnable 和 callable 有什么区别? runnable 没有返回值,callable 可以拿到有返回值,callable 可以看作是 runnable 的补充。 6. 线程有哪些状态? 线程的状态: NEW 尚未启动 RUNNABLE 正在执行中 BLOCKED 阻塞的(被同步锁或者IO锁阻塞) WAITING 永久等待状态 TIMED_WAITING 等待指定的时间重新被唤醒的状态 TERMINATED 执行完成 7. sleep() 和 wait(