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及多线程的面试题)的主要内容,如果未能解决你的问题,请参考以下文章