java学习第22天(关于java中的锁LOCK及多线程的面试题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习第22天(关于java中的锁LOCK及多线程的面试题)相关的知识,希望对你有一定的参考价值。

在JDK5后,java提供一种更加方便的安全机制,不使用synchronized,针对线程的锁定操作和释放操作使用Lock锁。更加清晰明了。举例:

Lock lock=new ReentrantLock();

lock.lock

需要加锁的代码

lock.unlock

 为什么说lock更为安全呢?因为synchronized可能会造成死锁现象,具体关于死锁现象可以参考操作系统,就不再多说。

总结下在线程中的主要几个问题

首先是

多线程有几种实现方式

应该上是有三种,第一种继承Thread类,第二种是实现Runnable接口。第三种和线程池有关。

同步的方式 有几种

同步代码块和同步方法,其中几个同步方法分为静态和非静态,非静态的锁对象使用this即可,静态使用.class。

启动一个线程是run()还是start()?

使用run的话实际上只是单纯的方法调用,与线程无关,而使用start(),则是由java虚拟机创建一个线程用该线程执行run方法。

sleep()和wait()的区别

sleep中必须包含需要睡眠的时间并且不需要进行唤醒,而wait是加锁的,是需要唤醒的。

 

以上是关于java学习第22天(关于java中的锁LOCK及多线程的面试题)的主要内容,如果未能解决你的问题,请参考以下文章

第5章 Java中的锁

学习笔记Java中的锁Lock

Java中的锁

Java基础学习第二十五天——多线程学习总结

java 22 - 14 JDK1.5以后的Lock锁

java 多线程中的锁的类别及使用