javarunnable接口(java 接口用法)
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;i10;i++){
System.out.println("线程开始:"+this.name+",i="+i);
}
java中Runnable接口含义?
java中Runnable接口:是一个接口,它里面只有一个run()方法,没有start()方法,继承Runnable并实现这个方法就可以实现多线程了,但是这个run()方法不能自己调用,必须由系统来调用。
举例如下:
[java] view plain copy
public interface Runnable{ ?
public void run(); ?
}
所以,即使实现了Runnable接口,那也无法启动线程,必须依托其他类。
而Thread类,有一个构造方法,参数是Runnable对象,也就是说可以通过Thread类来启动Runnable实现的多线程。
[java] view plain copy
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
所以,实现Runnable接口后,需要使用Thread类来启动。
举例说明java中的runnable 接口实现线程,并启动线程的方法.
public?class?RunnableDemo?{
public?static?void?main(String[]?args)?throws?Exception?{
long?statTime?=?System.currentTimeMillis();
SimpleRunnable?runnable1?=?new?SimpleRunnable();
SimpleRunnable?runnable2?=?new?SimpleRunnable();
//?每个?Thread(线程)可以接受一个?Runnable?的实现类做参数
//?线程启动时会去运行你实现的?run()?方法
Thread?thread1?=?new?Thread(runnable1);
Thread?thread2?=?new?Thread(runnable2);
thread1.start();?//?启动线程1
thread2.start();?//?启动线程2
thread1.join();?//?等待线程1运行结束
thread2.join();?//?等待线程2运行结束
long?endTime?=?System.currentTimeMillis();
double?time?=?(endTime?-?statTime)?/?1000.0;
System.out.println("程序运行时间:?"?+?time?+?"?秒");
//?每个任务运行时间都应该是?2?秒,但是因为你每个任务都用了一个线程去运行
//?所以这两个线程是同时(并发)进行的,所以这个程序只需要?2?秒左右就可以结束
}
}
//?写一个实现?Runnable?接口的类,并实现?run()?方法
class?SimpleRunnable?implements?Runnable?{
@Override
public?void?run()?{
runTask();?//?运行你的任务
}
private?void?runTask()?{
try?{
Thread.sleep(2000);?//?假设你的任务需要两秒完成
}?catch?(InterruptedException?ex)?{
ex.printStackTrace(System.err);
}
}
}
java百万并发任务怎么开线程
java百万并发任务用继承Thread类或实现Runnable接口开线程。
1、继承Thread类:重写run方法,在run方法中定义需要执行的任务,创建好了线程类之后,创建线程对象,然后通过start()方法去启动线程。
2、实现Runnable接口:实现Runnable接口必须重写其run方法。
Runnable接口详解?
在Java中,“线程”指两件不同的事情:
1、java.lang.Thread类的一个实例;
2、线程的执行。
使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。
一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。
Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。
一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。
一旦创建一个新的线程,就产生一个新的调用栈。
线程总体分两类:用户线程和守候线程。
当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。