您的位置:首页 > 编程语言 > Java开发

JAVA 并发编程随笔【七】线程安全与共享资源

2017-09-06 14:43 676 查看
一、局部变量是线程安全的,也就是说局部变量永远不会被多个线程共享‘’

二、局部对象如果不会被其它方法获得,也不会被非局部变量引用,那么我们就说这个对象是线程安全的;

三、对象的成员变量存储在堆上,如果多个线程同时访问一个对象的成员变量,那么对象就是非线程安全的。

package framework.yaomy.thread.model;

import framework.yaomy.thread.example.NotThreadSafe;

/**
* @Description:TODO
* @version 1.0
* @since JDK1.7
* @author yaomy
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年9月6日 下午2:11:08
*/
public class MyRunnable implements Runnable{

private NotThreadSafe notThreadSafe;
public MyRunnable(NotThreadSafe notThreadSafe) {
this.notThreadSafe = notThreadSafe;
}
@Override
public void run() {
this.notThreadSafe.add("你好==");
System.out.println("==============");

}

}


package framework.yaomy.thread.example;

import framework.yaomy.thread.model.MyRunnable;

/**
* @Description:TODO
* @version 1.0
* @since JDK1.7
* @author yaomy
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年9月6日 下午1:59:02
*/
public class NotThreadSafe {

private StringBuilder sb = new StringBuilder();
public void add(String text){
this.sb.append(text);
}

public static void main(String[] args) {

NotThreadSafe sharedInstance = new NotThreadSafe();
new Thread(new MyRunnable(sharedInstance)).start();
new Thread(new MyRunnable(sharedInstance)).start();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: