java中同步synchronized的意义,如何用它解决线程不安全的问题
来源:互联网 发布:企业软件收费模式 编辑:程序博客网 时间:2024/05/17 12:19
马克-to-win:从上节我们学到,当多个线程访问且更改同一个变量时,很容易出现线程安全问题,诚然,我们可以通过一些其他手段,比如局部变量,多个实例,调整程序结构来解决线程安全问题,但是通常来讲,通过同步机制synchronized来解决线程安全问题更加确定。比如,由于需求等其他限制条件决定,我们不能够用局部变量或多个实例或什么其他办法解决怎么办?synchronized为我们提供了比较确定的方法。换句话说,线程安全问题,synchronized基本能解决。分析上一节的线程安全问题,我们发现问题的起因主要是两个线程同时访问更改共同的变量造成的,只要我们让能够更改共同变量的方法序列的执行,(换句话就是一个执行完后,另一个再执行,) 就没问题了。如何实现呢? 用synchronized,现在针对上一节有问题的例子:1.8.1_b,我们只加一个字synchronized, 问题就解决了,
例1.9.1-本章源码
class Photoshop {
private Photoshop() {
}
private static Photoshop photoshop = null;
public synchronized static Photoshop getInstanceQixy() {
if (photoshop == null) {
photoshop = new Photoshop();
}
return photoshop;
}
}
class MyThreadMark_to_win extends Thread {
public void run() {
Photoshop photoshopI1 = Photoshop.getInstanceQixy();
System.out.println(Thread.currentThread().getName() + "实例是 "
+ photoshopI1);
}
}
public class Test {
public static void main(String[] args) {
MyThreadMark_to_win mt1 = new MyThreadMark_to_win();。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner6_web.html#PointOfSynchronized
例1.9.1-本章源码
class Photoshop {
private Photoshop() {
}
private static Photoshop photoshop = null;
public synchronized static Photoshop getInstanceQixy() {
if (photoshop == null) {
photoshop = new Photoshop();
}
return photoshop;
}
}
class MyThreadMark_to_win extends Thread {
public void run() {
Photoshop photoshopI1 = Photoshop.getInstanceQixy();
System.out.println(Thread.currentThread().getName() + "实例是 "
+ photoshopI1);
}
}
public class Test {
public static void main(String[] args) {
MyThreadMark_to_win mt1 = new MyThreadMark_to_win();。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner6_web.html#PointOfSynchronized
0 0
- java中同步synchronized的意义,如何用它解决线程不安全的问题
- java中如何解决线程不安全的问题呢?
- java解决线程不安全问题的方法
- 如何用 synchronized进行线程同步
- iphone线程中使用异步网络的问题,以及如何用NSRunLoop来解决
- iphone线程中使用异步网络的问题,以及如何用NSRunLoop来解决
- 线程同步:解决线程不安全问题
- 线程同步问题 解决同步问题的方法 synchronized方法 同步代码块
- java中线程同步块synchronized的实现二
- JAVA线程中同步锁(synchronized)的使用
- synchronized是解决多线程中同步问题的一个关键字
- Java线程同步问题synchronized
- 线程的同步synchronized
- java线程同步锁synchronized的认识
- Java线程同步--synchronized的用法
- java中synchronized,线程同步
- Java中使用同步关键字synchronized需要注意的问题
- 解决SimpleDateFormat的线程不安全问题的方法:ThreadLocal
- java中checked异常和unchecked异常区别?
- Android面试题
- camera 参数
- Web前端复习——Javascript复习(函数+分支结构)
- App开放接口api安全性—Token签名sign的设计与实现
- java中同步synchronized的意义,如何用它解决线程不安全的问题
- 简单学习rpc -- thrift demos
- tensorflow安装
- mysql timestamp datetime区别
- kafka常用命令
- ActiveMQ使用经验
- 多道单选题提交评分
- HashMap实现原理分析
- Android点击缩略图查看大图的缩放动画