面试常见问题 死锁代码&单例模式
来源:互联网 发布:下载邪恶漫画软件 编辑:程序博客网 时间:2024/05/29 17:24
1.写一个死锁
1)写一个锁类包含两个锁 锁A以及锁B
package cn.itcast.dieLock;public class MyLock {public static Object objA=new Object();//定义两把锁public static Object objB=new Object();}
2)死锁类
package cn.itcast.dieLock;public class DieLock extends Thread{private boolean flag;public DieLock(boolean flag){this.flag=flag;}@Overridepublic void run() {if(flag){synchronized (MyLock.objA) {System.out.println("if objA");synchronized (MyLock.objB) {System.out.println("if objB");}}}else{synchronized (MyLock.objB) {System.out.println("else objB");synchronized (MyLock.objA) {System.out.println("else objA");}}}}}3)测试:
package cn.itcast.dieLock;public class DieLockTest {public static void main(String[] args) {DieLock d1=new DieLock(true);DieLock d2=new DieLock(false);d1.start();d2.start();}}2.单例模式的恶汉式:
package cn.itcast.model;public class SingleModel {private SingleModel(){}//私有化private static SingleModel model=new SingleModel();//恶汉式一来就new对象public static SingleModel getInstance(){return model;}}测试:
package cn.itcast.model;public class SingleTest {public static void main(String[] args) {SingleModel model = SingleModel.getInstance();SingleModel model2 = SingleModel.getInstance();System.out.println(model==model2);}}打印结果:true
3.单例模式的懒汉式只有用到的时候才new对象
package cn.itcast.model;public class SingleModel2 {private SingleModel2(){}private static SingleModel2 model=null;//懒汉式 一来的时候不newpublic synchronized static SingleModel2 getInstance(){if(model==null){model=new SingleModel2();}return model;}}
测试:
package cn.itcast.model;public class SinlgeMode2Test {public static void main(String[] args) {SingleModel2 model=SingleModel2.getInstance();SingleModel2 mode2 = SingleModel2.getInstance();System.out.println(model==mode2);}}运行结果:true
注意:恶汉式开发的时候使用,因为没有线程安全问题,懒汉式有线程安全的问题,因此面试的时候经常问,但是面试的时候一定要加 同步锁!
0 0
- 面试常见问题 死锁代码&单例模式
- 面试-单例模式
- JAVA多线程单例模式及死锁
- 多线程、单例设计模式、死锁
- 面试基础 -- 单例模式
- 面试中的单例模式
- 面试之单例模式
- 面试之单例模式
- 面试--单例模式(75)
- 面试之单例模式
- 单例模式代码
- 单例模式 代码
- 基础 多线程 Thread synchronize 单例设计模式 死锁
- 单例模式通用代码
- c#单例模式代码
- 单例模式C++代码
- 单例模式代码示例
- 单例模式代码实例
- 求一个字符串中第一个出现无重复的字符
- activeMQ学习资料
- 教你彻底学会动态规划——进阶篇
- Codeforces Round #315 (Div. 2)
- iOS开发之OC类和对象
- 面试常见问题 死锁代码&单例模式
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十三章 协议
- JAVA基础一大堆0811数据库
- hdu 1301&& ny 434 &&poj 1251 Jungle Roads【最小生成树】
- JavaWeb学习总结——文件上传和下载
- nginx启动,重启,关闭命令;以及升级nginx切换命令
- Java Path变量和ClassPath变量
- ObjC第二节:属性声明、类的组合
- HDU 5372 Segment Game 树状数组