Java——单例模式的static方法和非static方法是否是线程安全的?
2018-03-01 23:45
399 查看
答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关。也就说,如果static方法或者非static方法不是线程安全的,那么不会因为这个类使用了单例模式,而变的安全。 闲话休说,看代码:import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestSingleton {
public static void main(String[] args) throws Exception {
ExecutorService pool = Executors.newFixedThreadPool(10);
for (int j = 0; j < 100000; j++) {
pool.submit(new Thread() {
public void run() {
Singleton.get().add();
}
});
}
pool.shutdownNow();
while (!pool.isTerminated())
;
System.out.println(Singleton.get().getcnt());
}
}
class Singleton {
private static Singleton singleton = new Singleton();
int cnt = 0;
private Singleton() {}
public static Singleton get() {
return singleton;
}
public void add() {
cnt++;
}
public int getcnt() {
return cnt;
}
}
参考链接(个人博客): http://www.cnblogs.com/liu-qing/p/4469965.html
import java.util.concurrent.Executors;
public class TestSingleton {
public static void main(String[] args) throws Exception {
ExecutorService pool = Executors.newFixedThreadPool(10);
for (int j = 0; j < 100000; j++) {
pool.submit(new Thread() {
public void run() {
Singleton.get().add();
}
});
}
pool.shutdownNow();
while (!pool.isTerminated())
;
System.out.println(Singleton.get().getcnt());
}
}
class Singleton {
private static Singleton singleton = new Singleton();
int cnt = 0;
private Singleton() {}
public static Singleton get() {
return singleton;
}
public void add() {
cnt++;
}
public int getcnt() {
return cnt;
}
}
参考链接(个人博客): http://www.cnblogs.com/liu-qing/p/4469965.html
相关文章推荐
- java——多线程——单例模式的static方法和非static方法是否是线程安全的?
- java 关于对“是否可以从一个static方法内部发出对非static方法的调用”问题的理解
- Java static 静态方法 并发(是否线程安全)
- 是否可以从一个static方法内部发出对非static方法的调用?
- 是否可以从一个static方法内部发出对非static方法的调用?
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- java学习之路 之 高级类特性2-关键字static、类变量、类方法、单例模式
- JAVA Static方法与单例模式的理解
- java基础之equal()方法、static关键字、单例设计模式
- Java实现线程安全的单例模式方法
- ”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
- static方法和非static方法的区别(java)
- 关于java (懒汉)单例模式是否存在线程安全的问题
- Java中synchronized 修饰在static方法和非static方法的区别
- Java中创建单例模式的五种方法及线程安全
- Java中静态方法是否属于线程安全
- 面试题9:问题:是否可以从一个static方法内部发出对非static方法的调用?
- JAVA Static方法与单例模式的理解
- 是否可以从一个static方法内部发出对非static方法的调用?
- Java的static方法为什么不允许直接使用非static的变量