任丘网站建设公司,网站开发数据库分析模板,西安网站建设 美科动,公司网站维护费 入什么科目Java中创建线程主要有三种方式#xff0c;分别为继承Thread类、实现Runnable接口、实现Callable接口。
继承Thread类#xff0c;重写run()方法#xff0c;调用start()方法启动线程
public class ThreadTest {/*** 继承Thread类*/public static class MyThread extends Thr…Java中创建线程主要有三种方式分别为继承Thread类、实现Runnable接口、实现Callable接口。
继承Thread类重写run()方法调用start()方法启动线程
public class ThreadTest {/*** 继承Thread类*/public static class MyThread extends Thread {Overridepublic void run() {System.out.println(This is child thread);}}public static void main(String[] args) {MyThread thread new MyThread();thread.start();}
}实现 Runnable 接口重写run()方法
public class RunnableTask implements Runnable {public void run() {System.out.println(Runnable!);}public static void main(String[] args) {RunnableTask task new RunnableTask();new Thread(task).start();}
}上面两种都是没有返回值的但是如果我们需要获取线程的执行结果该怎么办呢
实现Callable接口重写call()方法这种方式可以通过FutureTask获取任务执行的返回值
public class CallerTask implements CallableString {public String call() throws Exception {return Hello,i am running!;}public static void main(String[] args) {//创建异步任务FutureTaskString tasknew FutureTaskString(new CallerTask());//启动线程new Thread(task).start();try {//等待执行完成并获取返回结果String resulttask.get();System.out.println(result);} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}
}