创建线程的三种方式和区别
来源:互联网 发布:创业公司取名 知乎 编辑:程序博客网 时间:2024/06/06 21:40
第一种创建方式:
继承Thread,并且重写run方法。
package com.easytopit.thread;public class ExtendsThread extends Thread {@Overridepublic void run() {for(int i = 1;i<=100;i++){System.out.println("使用继承Thread的方法====="+i);}}}第二种创建方式(一般用的最多):
实现Runable接口,并且重写run方法。
package com.easytopit.thread;public class RunableThread implements Runnable {@Overridepublic void run() {for(int i = 1;i<=100;i++){System.out.println("使用实现Runnable方法来创建线程====="+i);}}}第三种创建方式:
实现Callable接口,并且重写call方法,通过FutureTask类来创建线程
package com.easytopit.thread;import java.util.concurrent.Callable;public class CallableThread implements Callable<Integer> {@Overridepublic Integer call() throws Exception {for(int i = 1;i<=100;i++){System.out.println("实现Callable接口并且实现call方法====="+i);}return null;}}
测试类如下:
package com.easytopit.thread;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;public class ThreadTest {public static void main(String[] args) {//创建线程Thread t1 = new ExtendsThread();Runnable run = new RunableThread();Thread t2 = new Thread(run);Callable<Integer> call = new CallableThread();FutureTask<Integer> ft = new FutureTask<>(call);Thread t3 = new Thread(ft);//只有start方法才是启动线程t1.start();t2.start();t3.start();}}
继承Thread类的,代码编写简单,并且可以使用currentThread()方法来访问当前线程,但是继承该类之后不能继承其它的类。
实现Runable接口,有利于扩展性,实现了该接口之后,还可以实现其它接口或者继承其它的类。
实现Callable接口,编写相对于其它两种比较复杂,但是可以有返回值并且能抛出异常。
1 0
- 创建线程的三种方式和区别
- Java创建线程的两种方式和主要区别
- 线程创建的两种方式和区别
- java创建线程的三种方式
- iOS创建线程的三种方式
- iOS创建线程的三种方式
- 创建线程的三种方式浅析
- java创建线程的三种方式
- 多线程-创建线程的三种方式
- 创建线程的三种方式
- 创建线程的三种方式
- NSThread创建线程的三种方式
- Java创建线程的三种方式
- Java线程创建的三种方式
- 创建线程对象的三种方式
- 创建线程的三种方式对比
- 【多线程】创建线程的三种方式
- Java创建线程的三种方式
- C#控制台 当函数成员的参数与字段名字重复了,使用this
- javascript常用函数使用
- 开发 - log4j打印两次日志的问题
- 【Hibernate 5】继承映射配置及多态查询
- 宋词辑注
- 创建线程的三种方式和区别
- java操作hdfs
- 文艺青年的两门必修课——绘画与音乐
- HTTP Status 500 - Request processing failed; nested exception is org.hibernate
- UITableView api解析
- Html 页面 局部刷新方法
- 集群、负载均衡、LVS
- iOS学习(二十)Objective-C 动态类型识别
- 类和对象