Java有几种新启线程的方式
Java天生锁多线程的。新启线程的方式只有两种,分别是继承Thread类和实现Runnable接口:
1.继承Thread类并重写run方法,然后通过start方法启动:
public class ThreadTest {
/**
* 继承Thread类
*/
private static class UseThread extends Thread {
@Override
public void run() {
super.run();
System.out.println("继承Thread类");
}
}
public static void main(String[] args) {
new UseThread().start();
}
}
2.实现Runnable接口并重写run方法,然后通过调用Thread构造方法初始化并使用start方法启动:
public class ThreadTest {
/**
* 实现Runnable接口
*/
private static class UseRunnable implements Runnable {
@Override
public void run() {
System.out.println("实现Runnable接口");
}
}
public static void main(String[] args) {
UseRunnable runnable = new UseRunnable();
new Thread(runnable).start();
}
}
虽然很明确的知道有两种方法,可是网络上还给出了第三种,代码如下:
public class ThreadTest {
/**
* 实现Callable接口,有返回值
*/
private static class UseCallable implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("实现Callable接口,有返回值");
return "result";
}
}
public static void main(String[] args) {
UseCallable useCallable = new UseCallable();
FutureTask task = new FutureTask(useCallable);
new Thread(task).start();
}
}
这所谓的第三种,其实本质上还是第二种,因为FutureTask实现了RunnableFuture接口,而RunnableFuture又继承了Runnable和Future<V>接口,所以不存在第三种情况。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。