1.多线程中采用继承Thread的方法后,run()方法中代码不能被不同对象共享,而实现Runnable接口后就能被共享?
这个问题,我觉得是看情况定的哦。
你看嘛,如果是继承Thread的话,你开启多个线程的的方法只能是,
- Ticket t1=new Ticket();
- Ticket t2=new Ticket();
- t1.start();
- t2.start();
复制代码
这样子你就开启了多个不同的对象,t1,t2,t1有自己的num,t2也有自己的num,所以这里的num不是这个几个对象共享的一个num。而如果你是实现Runnable接口的话,你启动多个线程的方法是,
- Ticket t = new Ticket();
- Thread t1 = new Thread(t);
- Thread t2 = new Thread(t);
复制代码
这里只是实例化了一个对象t,然后把t传到new Thread()中,所以t1,t2是共享一个t,也就共享一个t中的num。
如果你在这里把上面代码改为- Ticket t1 = new Ticket();
- Ticket t2=new Ticket();
- Thread th1 = new Thread(t1);
- Thread th2 = new Thread(t2);
复制代码
那也是一样的共享不是同一个num。你可以放在代码中测试一下,加深理解。
|