A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 一个好人 于 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接口  线程间就能共享成员变量(很多书上写的都是实现这个接口就能共享成员变量),求高手解答 我很久没弄出来了,谢谢

4 个回复

倒序浏览
没上同步锁吧
回复 使用道具 举报
继续求大牛解答
回复 使用道具 举报
Searching 来自手机 中级黑马 2015-4-18 08:44:48
板凳
已经实现了呀,你看线程2的数是不连续的,证明和线程1共享了数据,只是你没加同步锁,所以数据有问题。
回复 使用道具 举报
Searching 发表于 2015-4-18 08:44
已经实现了呀,你看线程2的数是不连续的,证明和线程1共享了数据,只是你没加同步锁,所以数据有问题。 ...

我认为的数据共享是 比如 线程1 i=1线程 2 i=2线程1 i=3 线程 2 i=4,,,,,,,,就是说i的值是顺序递增的,
可能是我没加数据的同步锁的原因 我再试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马