分享C/C++高性能后台程序设计和开发技能 死锁产生原因和图算法检测死锁 | 死锁,是指多个线程或者进程在运行过程中因争夺资源而造成的一种僵局,当进程或者线程处于这种僵持状态,若无外力作用,它们将无法再向前推进。 例如,线程 A 想获取线程 B 的锁,线程 B 想获取线程 C 的锁,线程 C 想获取线程 D 的锁,线程...
yield(): 线程:运行 --> 就绪; 系统调度交出CPU,进入就绪态,不会释放对象锁。 join(): 线程:运行 --> 阻塞; 释放对象锁(join内部就是wait())。 wait(): 线程:运行 --> 阻塞;释放对象锁,wait()方法必须与 synchronized关键字搭配使用 notify():线程:阻塞 --> 就绪;必须在同步方法或同步代码块中使用。
下列关于线程同步锁的说法正确的是()A.synchronized作用于方法或代码块B.synchronized任何对象都可以作为同步监视器C.synchronized可以
三、八股文(基本都是多线程内容) 1. ConcurrentHashMap底层数据结构,什么时候树化,什么时候退回链表,装填因子为什么是0.75 2. ConcurrentHashMap的volatile关键字修饰的是node还是node的val,为什么要用Jvolatile(JMM),sizectl属性(扩容、初始化、扩容阈值),get(为什么不加锁)方法,put方法(cas是什么,什么情况用,synchro...
参考解析:(P167)如果一个线程已进入某个共享资源的临界段,且还没有使用结束,其他进程必须等待。 试题内容: 下面有关临界段叙述错误的是() A:多线程互斥使用共享资源的程序段被称为临界段 B:临界段是一种加锁机制,与多线程共享资源有关 C:临界段的作用是在任何时该一个共享资源只能供一个线程使用 D:如果一...
下列( )方法起的作用是“唤醒在此对象锁上等待的所有线程”。 A. notifyAll() B. notify() C. sleep() D. wait()
参考解析:(P167)如果一个线程已进入某个共享资源的临界段,且还没有使用结束,其他进程必须等待。 试题内容: 下面有关临界段叙述错误的是() A:多线程互斥使用共享资源的程序段被称为临界段 B:临界段是一种加锁机制,与多线程共享资源有关 C:临界段的作用是在任何时该一个共享资源只能供一个线程使用 D:如果一...