Java多线程常见问题
记录Java多线程的常见概念和原理 参考: https://blog.csdn.net/justloveyou_/article/details/78313167 如何停止一个线程 使用volatile变量终止正常运行的线程 + 抛异常法/Return法 组合使用interrupt方法与interruptted/isinterrupted方法终止正在运行的线程 + 抛异常法/Return法 使用interrupt方法终止 正在阻塞中的 线程 线程安全 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。 为什么wait(), notify()和notifyAll()被定义在Object类里 Wait-notify机制是在获取对象锁的前提下不同线程间的通信机制。在Java中,任意对象都可以当作锁来使用,由于锁对象的任意性,所以这些通信方法需要被定义在Object类里。 为什么wait(), notify()和notifyAll()必须在同步方法或者同步块中被调用 wait/notify机制是依赖于Java中Synchronized同步机制的,其目的在于确保等待线程从Wait()返回时能够感知通知线程对共享变量所作出的修改。如果不在同步范围内使用