[Java面试]七:常见面试题之线程

7 篇文章 0 订阅

我的博客首页:http://blog.csdn.net/m0_37116405
我的GitHub首页:https://github.com/KissLouis


  1. 什么是程序,进程,线程
    1. 程序(Program):是一段静态的代码,他是应用软件执行的蓝本
    2. 进程(Process):是程序的一次执行过程,是系统运行程序的基本单位
    3. 线程(Thread): 是比进程更小的执行单位,程序的执行片段。相当于一个任务中的一条执行路径
  2. 如何在Java中实现线程以及用哪种方式会比较合适
    1. 继承Java.lang.Thread类
    2. 实现java.lang.Runnable接口。当你打算多重继承时,优先选择实现Runnable
  3. Thread.start()与Thread.run()有什么区别?
    1. 调用start()方法,表示该线程处于启动状态。会存在多条执行线程,主线程和子线程并行交替执行。
    2. 直接调用run()方法,不存在子线程的启动。因此只有一条主线程执行路径,也就不存在多线程的并行交替执行。
  4. 什么是ThreadLocal
    1. ThreadLocal是一个线程级别的局部变量,并非“本地线程”。用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。
  5. 什么是死锁以及死锁的解决方案
    1. 死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需资源。这种情况可能发生在当两个线程尝试获取其它资源的锁,而每个线程又陷入无限等待其它资源锁的释放,除非一个用户进程被终止。就JavaAPI而言,线程死锁可能发生在以下情况。
      1. 当两个线程相互调用Thread.join()
      2. 当两个线程使用嵌套的同步块,一个线程占用了另外一个线程必需的锁,互相等待时被阻塞就有可能出现死锁。
    2. 解决方案
      1. 给这些线程设置优先级。让一个(或几个)线程回退,剩下的线程就像没发生死锁一样继续保持着它们需要的锁
      2. 阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定的顺序(升序或降序)做操作来避免死锁。

常见面试题,还需补充。
如果本篇博文中存在问题,烦请指出,本人及时修改,谢谢阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值