public static void main(String[] args){
Thread t1 =new mythread();
Runnable run =new myrunnable();
Thread t2 =new Thread(run);
t1.start();
t2.start();
}
class mythread extends Thread{……}
class myrunnable implements Runnable{
public void run(){……}
}
Thread t2 =new Thread(run);这种创建对象方法以前没见过,()里面为什么会有内容?起什么效果?
------解决思路----------------------
创建线程有有两种方法,一种是继承Thread,复写Thread里面的run()方法,之后用继承的那个类创建对象,再调用start()就可以了;另一种则是实现Runnable接口,覆盖里面的run(),先用实现接口的那个类创建个对象,然后通过Thread创建对象,把之前那个对象作为实际参数传递给Thread类的构造函数,最后调用start()就行了。
------解决思路----------------------
打开java程序的时候,程序是个类。因为main函数是static的,所以基本等同于一个对象,产生一个线程。程序从main方法开跑;
程序中新产生新线程,需要指定运行的类,如同main函数,这个类需要有个run()方法,线程从run()方法开跑。
Thread(run)括号里的run是你新线程要跑的类的实体对象。
看Thread的构造函数的javadoc或源代码。
------解决思路----------------------
Runnable run =new myrunnable();
Thread t2 =new Thread(run);
两行写成一行就是Thread t2 =new Thread(new myrunnable());
Thread?t1?=new?mythread(run);这么写可以不过要放在run的声明后边