Ⅰ java中,通过实现Runnable接口来创建进程时,没有继承Thread类,为什么却可以创建Thread类对象
首先,Runnable 是Java 用来实现多线程的接口。
PS:Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口.
在使用Thread的时候只需要new一个实例出来,调用start()方法即可以启动一个线程。
Thread Test = new Thread();
Test.start();
在使用Runnable的时候需要先new一个继承Runnable的实例,之后用子类Thread调用。
Test impelements Runnable
Test t = new Test();
Thread test = new Thread(t);
在使用Runnable定义的子类中没有start()方法,只有Thread类中才有。
实现Runnable接口相比 继承Thread类有如下好处:
->避免点继承的局限,一个类可以继承多个接口。
Ⅱ java中如何使用Runnable接口实现线程
{
publicvoidrun()
{
System.out.println("通过实现Runable接口方式创建线程");
}
}
publicclassThreadTest2
{
publicstaticvoidmain(String[]args)
{
MyRunnablemr=newMyRunnable();
Threadthread=newThread(mr);
thread.start();
}
}
Ⅲ java中runnable和callable的区别
1、意义区别:
Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;
Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。
2、使用方法区别:
定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
创建 Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
举例说明:
package org.thread.demo;
class MyThread extends Thread{
private String name;
public MyThread(String name) {
super();
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println("线程开始:"+this.name+",i="+i);
}
Ⅳ java里为什么有了Thread还要有一个Runnable接口
这要看它们的作用了,Thread是一个类,而Runnable是一个接口,两个里面都有run方法,Thread只能被继承实现,Runnable 是implement ,举个简单的例子,如果你一个类继承自另一个类,这时候你又想实现run方法,那么只能使用runnable这个来实现,这是你这个问题最主要的一点,其次 ,runable 涉及资源可以共享这个问题,而继承自Thread类的方法,资源是相对独立的。