在现实开发中,我们写的线程肯定会有不同的实例在执行,此时就可能会出现"非线程安全问题",非线程安全就是:多个线程对同一个对象中的实例变量进行并发访问时候,有可能A和B线程同时读取到数据,先后进行更改,此时,该变量就不是我们期望的数据,也就是通常所说的"脏数据" 实例变量非线程安全 需要注意的是,方法中的变量是不存在非线程安全问题的,这是因为方法内部的变量都是私有的. 如果多个线程共同访问了一个对象中的实例变量,则可能会出现线程安全问题.看下面代码: public c
在编写多线程程序时,最重要的就是搞清楚哪些变量是共享的,哪些变量是不共享的.也就是要分析清楚其中的原理呀. 因为最近要使用多线程就看了一些,对使用Thread类的子类创建线程的情况,总结如下: 1.方法体内部定义的局部变量不共享 这是因为方法内部定义的变量是在运行时动态生成的.每个线程都有一个自己的堆栈,用于保存运行时的数据. 最容易理解的就是递归调用时候,每次的入栈出栈操作.如下,每次调用时,变量aa都是在运行时堆栈上保存的,方法结束变量也就释放了. public int fib(int n)