首页 > 代码库 > java学习第22天(关于java中的锁LOCK及多线程的面试题)

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及多线程的面试题)