当前位置: 首页 > java>阅读正文

Java线程面试题

2021.12.30 朱丰华 663 次 留下评论 698字

1.sleep和yield的区别?

sleep会休眠线程(以时间计算),可以让更高或更低的线程获取运行权限。而yield解释为让线程从运行状态回到就绪状态(结束本次运行),意味着接下来它仍然竞争运行权限,有可能再次回到运行状态。

显而易见,在对于锁操作上,sleep不释放锁,而yield则释放锁。

2.start和run的区别?

调用start方法能自动调用run方法并创建线程(start多线程),如果直接调用run方法则仅仅是一个普通方法无法创建新线程(run单线程)。

3.notify和notifyAll的区别?

notify唤醒正在等待此对象的监视器的单个线程,如果有多个等待的线程,则随机唤醒一个线程。

notifyAll唤醒所有等待的线程,它唤醒所有线程并允许他们争夺锁确保了至少有一个线程能继续运行。

4.创建多线程的2种方式

第一种方式,继承Thread类,重写run方法,实例化该类,并调用start方法

第二种方式,继承Runnable接口,重写run方法,实例化Thread类(带Runnable接口参数),并调用start方法。

5.线程的优先级高低有什么作用?

线程的优先级越高,不一定先执行,但其被执行的可能性越高。

6.线程的优先级最大、最小值,默认值是什么?

线程优先级最大值为10,最小值1,默认值为5。

(实际上,线程的默认优先级是父线程的优先级)

7.进程和线程的区别?

进程是资源分配的最小单位,线程是资源调度的最小单位。

一个进程中,可以包含有一个或多个线程。

8.并发和并行的区别?

并行中,一个cpu仅执行一个线程。

并发中,一个cpu交替执行多个线程。

一般情况下,计算机都处于并发状态。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注