标签:请求 独立 停止 上下 原子性 故障 等待资源 活性 单例模式
进程和线程的区别?
线程可以拥有属于自己独立的资源嘛?
答:可以的,通过ThreadLocal可以存储线程的特有对象,也就是属于当前线程的资源。
进程之间常见的通讯方式?
通过使用套接字Socket来实现不同机器间的进程通讯
线程的状态有哪些?
sleep和wait的区别?
sleep方法是Thread类的静态方法,当前线程将睡眠n毫秒,线程进入阻塞状态,当睡眠时间到了,会解除阻塞,进入可运行状态,等待CPU的到来。睡眠不释放锁
wait方法是Object的方法,必须与synchronized关键字一起使用,线程进入阻塞状态,当notify或者notifyall被调用后,会解除阻塞。但是,置于重新占用互斥锁之后才能进入可运行状态。睡眠时,会释放互斥锁。
join和yield方法?
join方法:当前线程调用,则其他线程全部停止,等待当前线程执行完毕,接着执行。
yield方法:该方法是的线程放弃当前分到的CPU时间,但是不是线程阻塞,即线程扔处于可执行状态,随时可能再次分的CPU时间。
线程死锁的问题:死锁是最常见的一种线程活性故障。死锁的起因是多个线程之间相互等待对方而被永远暂停(处于非Runnable)。死锁产生的四个必要条件。
如何避免死锁的发生?
谈一谈对Synchronized关键字的理解
答:synchronized是Java的一个关键字,是一个内部锁。他可以使用在方法上和方法块上。表示同步方法和同步方法块。在多线程环境下,同步方法或者同步代码块在同一时刻只允许有一个线程在执行,其余的线程都在等待获取锁,也就是实现了整体并发中的局部串行。
谈一谈内部锁底层的实现?
谈一谈你对Volatile关键字的理解?
答:volatile关键字是一个轻量级的锁,可以保证可见性和有序性,但是不保证原子性
解析:
ReentrantLock和synchronized的区别?
答:synchronized 是可重入的排它锁,和 ReentrantLock 锁功能相似,任何使用 synchronized 的地方,几乎都可以使用 ReentrantLock 来代替,两者最大的相似点就是:可重入 + 排它锁,两者的区别主要有这些:
JVM对资源进行调度方式分为公平调度和非公平调度。
公平调度方式:按照申请的先后顺序授权资源的独占权
非公平调度方式:新来的线程(活跃线程)可以先被授予该资源的独占权。
?
标签:请求 独立 停止 上下 原子性 故障 等待资源 活性 单例模式
原文地址:https://www.cnblogs.com/shine-rainbow/p/12343646.html