以下为慕课网总结,希望对大家有所帮助
设计模式:房子建筑套路,战争36计,反复使用,代码设计总结,增加代码可重用性
单例模式:实例,对象只有一个
饿汉模式:
Public class singleton{
Private singleton(){//构造方法私有化,不能被外界创建
}
Private Static Singleton instance = new Singleton();//2静态方法可被类名直接调用,创建唯一的实例,类加载时就加载了,用户不掉用也会先创建
Public static Singleton getinstence(){//静态为类所有,能被外界直接调用
Return instance;
}
}
Public class Test{
Public static void main(string【】 args){
//New singleton();private构造方法时不可用
// New singleton();private构造方法时不可用
//Singleton s1 =Singleton.Instance;2.为静态时可以用,为private时不可用
//Singleton s2 =Singleton.Instance;
Singleton s1 =Singleton.getinstance();
Singleton s2 =Singleton.getinstance();
If(s1==s2){
System.out.println(“s1和s2是同一个实例”);//这个为日志输出
}else{
System.out.println(“s1和s2不是同一个实例”);
}
}
}
懒汉模式:
Public class singleton{
Private Singleton(){
}
Private static Singleton instance;//没有实例化
Public static singleton getsingleton(){
If(instance==null){
Instance = new singleton();
}
Return instance;
}
}
饿汉模式加载类时比较慢,但是运行时获取比较快,线程安全的
懒汉模式加载类时比较快,但是运行时获取对象比较慢,线程不安全的
java中的线程安全是什么:
就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问
什么叫线程安全:
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。