2.1.1方法内的变量(私有变量)是线程安全的

来源:互联网 发布:java连接mongodb 编辑:程序博客网 时间:2024/06/01 09:31

package cha02.execise01;/** * Created by sunyifeng on 17/9/20. */public class HasSelfPrivateNum {    public void addI(String username) {        try {            int num = 0;            if (username.equals("a")) {                num = 100;                System.out.println("a set over");                Thread.sleep(2000);            } else {                num = 200;                System.out.println("b set over");            }            System.out.println(username + " num = " + num);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}
package cha02.execise01;/** * Created by sunyifeng on 17/9/20. */public class ThreadA extends Thread {    private HasSelfPrivateNum numRef;    public ThreadA(HasSelfPrivateNum numRef){        super();        this.numRef = numRef;    }    @Override    public void run(){        super.run();        numRef.addI("a");    }}
package cha02.execise01;/** * Created by sunyifeng on 17/9/20. */public class ThreadB extends Thread {    private HasSelfPrivateNum numRef;    public ThreadB(HasSelfPrivateNum numRef){        super();        this.numRef = numRef;    }    @Override    public void run(){        super.run();        numRef.addI("b");    }}
package cha02.execise01;/** * Created by sunyifeng on 17/9/20. */public class Run {    public static void main(String[] args) {        HasSelfPrivateNum numRef = new HasSelfPrivateNum();        //        ThreadA threadA = new ThreadA(numRef);        threadA.start();        //        ThreadB threadB = new ThreadB(numRef);        threadB.start();    }}
运行结果:

a set over
b set over
b num = 200
a num = 100

程序分析:

方法内部的变量是私有变量,不存在“非线程安全的问题”。

原创粉丝点击