ThreadA 和 ThreadB 实现 runnable接口。两个类都重载了run(),两个run(Class c); 这两个run是带参数的,如何实现两个线程并发呢?要是 threada.start();threadb.start();这会默认执行不带参数的run()函数吧,要是显式调用带参数的run(参数)函数,那就只能等到第一个线程结束之后,第二个线程才能执行。
求解决之法~
class father{ threada,threadb }, father类中有一些私有属性在两个线程中用到,因此我设想在run()函数中传递father类的对象(threada,run(this)之类),但实际上这没有开启线程。
我又不想将father类的私有属性设为static,这样不恰当。 如果没有解决办法的话,只好将这两个类设为father类的内部类。
我不用带参数的run(),直接用threada.run() threadb.run() ,我试了一下,两个线程并没有并发执行,怎么回事?
追答你可以用内部类
public class father{
public class threada{
}
public class threadb{
}
}
这样threada 和 threadb可以访问father的method和属性。
我不用带参数的run(),直接用threada.run() threadb.run() ,我试了一下,两个线程并没有并发执行,怎么回事?threada和threadb继承Thread类,再threada.start(),threadb.start()就能实现并发。为什么实现rannable接口就不能,求解
thread 执行是这样的:
你可以继承Thread类 那就用a.start()执行
如果是实现runable接口就必须new Thread(a).start().
两种方法有区别,你可以看看书。
在继承接口的情况下,a.run(); 只是一个普通的方法,没有赋予任何含义,只有在Thread的封装下才是一个线程运行的函数
是这样的class father{ threada,threadb },run()函数需要的参数是father类的对象。
在构造函数里: threada.run(this);
这种情况如何处理?