![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
qq_44282622
这个作者很懒,什么都没留下…
展开
-
简述synchronized和java.util.concurrent.locks.Lock的异同
相同点: Lock能完成synchronized所能实现的所有功能 不同点: Lock有比synchronized更精确的线程语义和更好的性能,synchronized自动释放锁,而Lock需要程序员手动释放,而且必须在finally语句块中释放,Lock还有更强大的功能,比如它的tryLock方法可以非阻塞方式拿锁。 ...原创 2021-01-06 20:52:09 · 233 阅读 · 0 评论 -
线程的基本概念、线程的基本状态以及状态之间的关系?
线程: 一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段代码同时执行,每个程序至少有一个线程,即main方法执行的线程。 基本状态: 就绪、运行、阻塞、挂起、结束,wait()必须在同步代码块中使用。 关系: 调用线程的start()方法后使线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞状态,当线程获得锁后,转为运行状态,在运行状态可以调用wait()方法转为挂起状态,当线原创 2021-01-06 20:39:15 · 163 阅读 · 0 评论 -
当一个线程进入一个对象的一个synchronized方法后,其他线程是否可以进入此对象的其他方法?
普通方法肯定是可以进入的,所以这里假设所有的方法都是同步方法 应该分情况讨论: 1、其他方法如果都是synchronized修饰的方法,则不能,因为对象锁已经被占用。 2、如果有static synchronized修饰的方法,则可以,因为static synchronized是将类的字节码作为锁,和对象锁并不是同一把锁。 3、如果本方法中调用了wait()方法,则可以,因为wait()方法会释放当前锁并使线程进入阻塞状态。 ...原创 2021-01-06 20:21:19 · 700 阅读 · 0 评论 -
多线程有几种实现方法?同步有几种实现方法?
多线程有四种实现方法 1、继承Thread类 2、实现Runnable接口 3、实现Callable接口 4、通过线程池创建 同步有三种实现方法 1、使用sychronized关键字 2、在变量上使用volatile关键字 3、在类中加入重入锁 ...原创 2021-01-05 22:59:35 · 214 阅读 · 1 评论