Thread
来源:互联网 发布:网页下载app源码 编辑:程序博客网 时间:2024/06/05 05:11
实现线程同步,总结三个结论:
1.当多个线程同事执行synchronized(x){}同步代码块时呈同步效果
2.当其他线程执行x对象中synchronized同步方法时呈同步效果
3.当其他线程执行x对象方法里面的synchronized(this)代码块时也呈通过效果
注意:如果其他线程在调用线程时不添加synchronized关键字的方法时,仍然处于异步调用;
**
单例模式与多线程
- 饿汉模式
public class MyObject { private static MyObject myObject = new MyObject(); public static MyObject getInstance() { return myObject; }}
- 懒汉模式
public class MyObject { private static MyObject myObject ; synchronized public static MyObject getInstance() { try { if (myObject != null) { } else { myObject = new MyObject(); } } catch (Exception e) { // TODO: handle exception } return myObject; }}
当然,同步代码块也是可以(同步方法是对方法的整体进行持锁,其运行效率相对较低)。
使用DCL双检查锁机制(这是最成功的方法,解决“懒汉模式”遇到多线程的问题,DCL也是大多数多线程结合单例模式使用的解决方案。)
public class MyObject { private volatile static MyObject myObject ; public static MyObject getInstance() { try { if (myObject != null) { } else { Thread.sleep(3000); synchronized (MyObject.class) { if (myObject == null) { myObject = new MyObject(); } } } } catch (Exception e) { // TODO: handle exception } return myObject; }}**使用静态内置类实现单例模式**
public class MyObject {
// 静态内部类private static class MyObjectHandler { private static MyObject myObject = new MyObject();}private MyObject(){}public static MyObject getInstance() { return MyObjectHandler.myObject;}
}
**使用static代码块实现单例模式**
public class MyObject {
private static MyObject insMyObject = null;private MyObject(){}static { insMyObject = new MyObject();}public static MyObject getInstance() { return insMyObject;}
}
“`
线程状态
NEW
RUNNABLE
TERMINATED
BLOCKED
WAITING
TIMED_WAITING
阅读全文
1 0
- Thread
- thread
- Thread
- Thread
- thread
- thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- Thread
- -----FZU 2150-Fire Game
- ICS datalab总结
- Qt5 QAudioOutput+QIODevice 播放固定频率的声音
- HDU 5976 && 2016ICPC大连 F: Detachment(找规律)
- 计算末尾0的个数
- Thread
- Pascal运行错误及编译错误对照表
- java 面试题及答案
- ubuntu设置环境变量错误导致系统无法登陆解决方法
- Django 点滴记录
- Steed:存储树结构数据的分析型数据库
- Java Notes 00
- 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议经验案例
- 使用PowerDesigner进行数据库建模入门