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

本帖最后由 张然龙 于 2014-4-28 22:05 编辑

今天看到毕老师的多线程通讯时候,如何测试也不对,N个小时后发现在主方法中创建A对象,再将A类实现Runnable接口 ,利用run方法开启两个线程。。发现这样设计两个对象都可以拿到相同的B、C对象的引用。。。顿时无语。。。请问各位,遇到过的指点下,这算是什么设计方式? 代码如下↓

import java.util.concurrent.locks.*;

class A implements Runnable
{
        B b=new B();
        public void run()
        {
                b.run();
        }
}
class B
{
        C c=new C();
        public void run()
        {
                c.run();
        }
}
class C
{
        int x;
        public void run()
        {
                for(;x<1000;x++)
                {
                        System.out.println(Thread.currentThread().getName()+"\t"+x);
                }
        }
}

class Demo2
{
        public static void main(String k[])
        {
                A a=new A();
                new Thread(a).start();
                new Thread(a).start();
        }
}

2 个回复

倒序浏览
这不是什么设计方式!这是在演示实现线程的第二种方法,类实现Runnable()接口,冲写run()方法
并传入线程对象,启动两个线程,看看两个线程如何运行!
               for(;x<1000;x++)
                {
                        System.out.println(Thread.currentThread().getName()+"\t"+x);
                }
是为了打印出当前是哪个线程+次数,
至于A类new一个B类对象!而B类里面new一个C类对象,C类里面实现了for循环或者While循环也行!这个不需要解释了吧!这是run的嵌套!

               new Thread(a).start();
                new Thread(a).start();
中间加上
                try{Thread.sleep(10);}catch(Exception e){}主线程的睡眠,效果会更加明显,应该是交替出现!
线程很重要!希望能帮到你!
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马