当前位置: 代码迷 >> J2SE >> java runnable共享的内容是什么?解决方法
  详细解决方案

java runnable共享的内容是什么?解决方法

热度:64   发布时间:2016-04-23 20:24:16.0
java runnable共享的内容是什么?
我提一个比较蠢的问题, 就是runnable对象能实现资源共享, 但是这个资源共享包不包括局部变量呢?
我自己实验了一下,
class RunnableTest implements Runnable
{
int g ;
public void run()
{
for(int i=0 ; i<100 ; i++,g++)
{
System.out.println(Thread.currentThread().getName() + "------i " + i + " ------g " + g) ;
}
}
}


public class javatest
{
public static void main(String args[])
{
RunnableTest r = new RunnableTest() ;
Thread t1 = new ThreadTest("线程一" , r) ;
Thread t2 = new ThreadTest("线程二" , r) ;
t1.start() ;
t2.start() ;
}
}

运行的结果如下:

从这儿我猜的runnable对象共享的内容仅限于成员变量, 而不包括局部变量. 不知道这么想的对不对呀?
还有一个问题, 为什么g为0的情况输出了两次?runnable不是可以共享成员变量吗?
------解决方案--------------------
局部变量之所以叫做局部,就是因为它真的很局部。该函数中的局部变量的每次函数调用中都是独一无二的,无论是单线程还是多线程。


你的第二个问题是并发问题,这个就命题较大,涉及并发访问、可见性等问题。
------解决方案--------------------
引用:
局部变量之所以叫做局部,就是因为它真的很局部。该函数中的局部变量的每次函数调用中都是独一无二的,无论是单线程还是多线程。


你的第二个问题是并发问题,这个就命题较大,涉及并发访问、可见性等问题。

正解,第二个问题是并发,第一个问题建议多看看变量的作用域这一块儿
------解决方案--------------------
变量的作用域问题都没有弄清楚,那怎么能够理解并发呢,先还是从最基本的入手吧。
  相关解决方案