Java多线程口试、笔试标的目标---后续补充
添加时间:2013-6-21 点击量:
1.ThreadLocal类
线程级此外局部变量,为每个应用该变量的线程供给一个自力的变量副本,每个线程批改副本时不影响其他线程对象的副本。
ThreadLocal实例凡是作为静态私有字段呈如今一个类中。
2.什么景象会抛出InvalidMonitorStateException异常
调用Object.wait()/Object.notify()/Object.notifyAll()中的任何一个办法时,若是当火线程没有获得该对象的锁,那么就会抛出 IllegalMonitorStateException 的异常
3.Object.wait()和Thread.sleep()
Object.wait(),在拥有该对象锁的景象下,开释该对象锁。一旦线程从头获取到该对象的锁时,办法返回。
Object.notify()
Thread.sleep():让出CPU分派的履行时候,然则不开释该线程拥有的锁。
4.静态办法上应用同步
若是一个静态办法被申明为synchronized,则等同于在这个办法上调用synchronized(类.class)。
当一个线程进入同步静态办法中时,其他线程不克不及进入这个类的任何静态同步办法。
5.死锁
死锁就是两个或两个以上的线程被无穷的梗阻,线程之间彼此守候所需资料。
可能产生在以下景象:
当两个线程彼此调用Thread.join();
当两个线程应用嵌套的同步块,一个线程占用了别的一个线程必须的锁,互相守候时被梗阻就有可能呈现死锁。
6.ReentrantLock:
守候可中断:tryLock(long timeout,TimeUnit unit)当持有锁的线程长久不开释锁时,正在守候的线程可以选择放弃守候,改为处理惩罚其他工作。
公允锁:多个线程在守候同一个锁时,必须遵守申请锁的事务次序来依次获取锁;而非公允锁在被开释时,任何一个守候锁的线程都有机会获得锁。
Synchronized 中的锁长短公允锁,ReentrantLock 默认也长短公允锁。tryLock()打破公允性,若是该锁没有被另一个线程对峙,立即返回true值,并将锁的对峙计数器置1。
锁绑定多个前提:一个ReentrantLock对象可以同时绑定多个Condition对象。
7.线程状况:
新建 NEW:
运行 RUNNABLE:
无穷期守候 WAITING:等得其他线程显式地唤醒。
没有设置 Timeout 参数的 Object.wait();没有设置 Timeout 参数的 Thread.wait()。
限日守候 TIMED_WAITING:在一按时候之后会由体系主动唤醒。
设置 Timeout 参数的 Object.wait();设置 Timeout 参数的 Thread.wait();Thread.sleep()办法。
梗阻 BLOCKED:守候获取一个排它锁,守候进入一个同步区域。
停止 TERMINATED:无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
1.ThreadLocal类
线程级此外局部变量,为每个应用该变量的线程供给一个自力的变量副本,每个线程批改副本时不影响其他线程对象的副本。
线程级此外局部变量,为每个应用该变量的线程供给一个自力的变量副本,每个线程批改副本时不影响其他线程对象的副本。
ThreadLocal实例凡是作为静态私有字段呈如今一个类中。
2.什么景象会抛出InvalidMonitorStateException异常
调用Object.wait()/Object.notify()/Object.notifyAll()中的任何一个办法时,若是当火线程没有获得该对象的锁,那么就会抛出 IllegalMonitorStateException 的异常
3.Object.wait()和Thread.sleep()
Object.wait(),在拥有该对象锁的景象下,开释该对象锁。一旦线程从头获取到该对象的锁时,办法返回。
Object.notify()
Thread.sleep():让出CPU分派的履行时候,然则不开释该线程拥有的锁。
4.静态办法上应用同步
若是一个静态办法被申明为synchronized,则等同于在这个办法上调用synchronized(类.class)。
2.什么景象会抛出InvalidMonitorStateException异常
调用Object.wait()/Object.notify()/Object.notifyAll()中的任何一个办法时,若是当火线程没有获得该对象的锁,那么就会抛出 IllegalMonitorStateException 的异常
3.Object.wait()和Thread.sleep()
Object.wait(),在拥有该对象锁的景象下,开释该对象锁。一旦线程从头获取到该对象的锁时,办法返回。
Object.notify()
Thread.sleep():让出CPU分派的履行时候,然则不开释该线程拥有的锁。
4.静态办法上应用同步
若是一个静态办法被申明为synchronized,则等同于在这个办法上调用synchronized(类.class)。
当一个线程进入同步静态办法中时,其他线程不克不及进入这个类的任何静态同步办法。
5.死锁
死锁就是两个或两个以上的线程被无穷的梗阻,线程之间彼此守候所需资料。
可能产生在以下景象:
当两个线程彼此调用Thread.join();
当两个线程应用嵌套的同步块,一个线程占用了别的一个线程必须的锁,互相守候时被梗阻就有可能呈现死锁。
6.ReentrantLock:
守候可中断:tryLock(long timeout,TimeUnit unit)当持有锁的线程长久不开释锁时,正在守候的线程可以选择放弃守候,改为处理惩罚其他工作。
公允锁:多个线程在守候同一个锁时,必须遵守申请锁的事务次序来依次获取锁;而非公允锁在被开释时,任何一个守候锁的线程都有机会获得锁。
Synchronized 中的锁长短公允锁,ReentrantLock 默认也长短公允锁。tryLock()打破公允性,若是该锁没有被另一个线程对峙,立即返回true值,并将锁的对峙计数器置1。
锁绑定多个前提:一个ReentrantLock对象可以同时绑定多个Condition对象。
7.线程状况:
新建 NEW:
运行 RUNNABLE:
无穷期守候 WAITING:等得其他线程显式地唤醒。
没有设置 Timeout 参数的 Object.wait();没有设置 Timeout 参数的 Thread.wait()。
限日守候 TIMED_WAITING:在一按时候之后会由体系主动唤醒。
设置 Timeout 参数的 Object.wait();设置 Timeout 参数的 Thread.wait();Thread.sleep()办法。
梗阻 BLOCKED:守候获取一个排它锁,守候进入一个同步区域。
停止 TERMINATED:
无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
5.死锁
死锁就是两个或两个以上的线程被无穷的梗阻,线程之间彼此守候所需资料。
可能产生在以下景象:
当两个线程彼此调用Thread.join();
当两个线程应用嵌套的同步块,一个线程占用了别的一个线程必须的锁,互相守候时被梗阻就有可能呈现死锁。
6.ReentrantLock:
守候可中断:tryLock(long timeout,TimeUnit unit)当持有锁的线程长久不开释锁时,正在守候的线程可以选择放弃守候,改为处理惩罚其他工作。
公允锁:多个线程在守候同一个锁时,必须遵守申请锁的事务次序来依次获取锁;而非公允锁在被开释时,任何一个守候锁的线程都有机会获得锁。
Synchronized 中的锁长短公允锁,ReentrantLock 默认也长短公允锁。tryLock()打破公允性,若是该锁没有被另一个线程对峙,立即返回true值,并将锁的对峙计数器置1。
锁绑定多个前提:一个ReentrantLock对象可以同时绑定多个Condition对象。
7.线程状况:
新建 NEW:
运行 RUNNABLE:
无穷期守候 WAITING:等得其他线程显式地唤醒。
没有设置 Timeout 参数的 Object.wait();没有设置 Timeout 参数的 Thread.wait()。
限日守候 TIMED_WAITING:在一按时候之后会由体系主动唤醒。
设置 Timeout 参数的 Object.wait();设置 Timeout 参数的 Thread.wait();Thread.sleep()办法。
梗阻 BLOCKED:守候获取一个排它锁,守候进入一个同步区域。
停止 TERMINATED: