黑马程序员技术交流社区
标题:
求教:实现Runnable的线程为什么不能实现共享成员变量
[打印本页]
作者:
一个好人
时间:
2015-4-17 23:25
标题:
求教:实现Runnable的线程为什么不能实现共享成员变量
本帖最后由 一个好人 于 2015-4-19 17:42 编辑
public class RunnableDemo implements Runnable
{
private int a;
@Override
public void run()
{
for (; a < 9; a++)
{
System.out.println(Thread.currentThread().getName() + " " +a );
}
}
public static void main(String[] args)
{
for (int i = 0; i < 9; i++)
{
System.out.println(Thread.currentThread().getName() + " " + i);
if (i == 4)
{
RunnableDemo runnable = new RunnableDemo();
new Thread(runnable,"新线程1:").start();
new Thread(runnable,"新线程2:").start();
}
}
}
}
结果是
main 0
main 1
main 2
main 3
main 4
main 5
新线程1: 0
main 6
新线程1: 1
新线程2: 1
main 7
新线程2: 3
新线程1: 2
新线程1: 5
新线程2: 4
main 8
新线程2: 7
新线程1: 6
新线程2: 8
------------------------------------------------------------------------------------------
以上过程并不能表示实现了runnable接口 线程间就能共享成员变量(很多书上写的都是实现这个接口就能共享成员变量),求高手解答 我很久没弄出来了,谢谢
作者:
谷歌
时间:
2015-4-18 00:48
没上同步锁吧
作者:
一个好人
时间:
2015-4-18 08:33
继续求大牛解答
作者:
Searching
时间:
2015-4-18 08:44
已经实现了呀,你看线程2的数是不连续的,证明和线程1共享了数据,只是你没加同步锁,所以数据有问题。
作者:
一个好人
时间:
2015-4-18 08:49
Searching 发表于 2015-4-18 08:44
已经实现了呀,你看线程2的数是不连续的,证明和线程1共享了数据,只是你没加同步锁,所以数据有问题。 ...
我认为的数据共享是 比如 线程1 i=1线程 2 i=2线程1 i=3 线程 2 i=4,,,,,,,,就是说i的值是顺序递增的,
可能是我没加数据的同步锁的原因 我再试试
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2