当前位置: 代码迷 >> J2SE >> 关于implement的程序阅读有关问题
  详细解决方案

关于implement的程序阅读有关问题

热度:59   发布时间:2016-04-23 19:38:58.0
关于implement的程序阅读问题

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或源代码。
------解决思路----------------------
引用:
Quote: 引用:
Quote: 引用:

Quote: 引用:

Runnable对象是限定了线程运行的工作内容,通过run方法

什么意思?是说t2的run跑的是myrunnable里面的run?
那可以建一个新的继承Thread的class,重载run()和这个一样吗

Runnable run =new myrunnable();
Thread t2 =new Thread(run);
这两行的run是同一个,是Runnable的一个引用,和run()方法没有关系

把Thread?t1?=new?mythread();变成
Thread?t1?=new?mythread(run);
效果一样么

Runnable run =new myrunnable();
Thread t2 =new Thread(run);
两行写成一行就是Thread t2 =new Thread(new myrunnable());
Thread?t1?=new?mythread(run);这么写可以不过要放在run的声明后边