标签:art end result 注意 BMI cut 其他 ret 一点
这次来盘点一下Java中用线程执行任务的写法。
最基本的实现方法是在创建一个继承Thread的新类,在其中覆盖run()方法执行任务。
1 public class MyThread extends Thread { 2 // 变量 3 private String name = "";
4 // 构造函数 5 public MyThread() {} 6 public MyThread(String name) { 7 this.name = name; 8 }
9 // run方法中执行任务 10 @Override 11 public void run() { 12 System.out.println("这个线程的名字是" + name); 13 } 14 }
new一个新的线程后,使用start()方法将其变为可运行(Runnable)状态,随后会根据系统调度执行或中断。另外,正在执行的线程也处在可运行状态。
如果执行的任务没有返回值,可以让自己的线程类实现Runnable接口。
1 public class MyRunnable implements Runnable { 2 // 变量 3 private String name = ""; 4 // 构造函数 5 public MyThread() {} 6 public MyThread(String name) { 7 this.name = name; 8 } 9 // run方法中执行任务 10 @Override 11 public void run() { 12 System.out.println("这个线程的名字是" + name); 13 } 14 }
需要注意以下几点:
实现Runnable接口的方法没有返回值,而且不会抛出受查异常。如果有这些需求,需要实现Callable<T>接口。
1 public class MyCallable implements Callable<String> { 2 // 变量 3 private String name = ""; 4 // 构造函数 5 public MyCallable() { } 6 public MyCallable(String name) { 7 this.name = name; 8 } 9 // call方法中执行任务 10 @Override 11 public String call() throws Exception { 12 System.out.println(name); 13 return name; 14 } 15 }
Callable<T>接口带有T类型的返回值,实现了该接口的类必须覆盖call()方法,这个方法可以抛出异常。
实现了Callable<T>接口的线程类需要先用 FutureTask<T> result = new FutureTask<>(new MyCallable()) 创建一个对象,用 new Thread(result).start() 执行完毕后可以用result.get()获取T类型的返回值。
在线程池中,用submit(Callable<T> callable)执行此类线程。
标签:art end result 注意 BMI cut 其他 ret 一点
原文地址:https://www.cnblogs.com/lycx/p/10083222.html