微信搜索《Java鱼仔》,每天一个知识点不错过
(一)每天一个知识点
你能说出四种创建线程的方式吗?
(二)回答
Java中创建线程的方式主要有四种:
1.继承Thread类实现run方法
2.实现Runable接口实现run方法
3.实现Callable接口实现call方法
4.使用线程池实现
(一)继承Thread类实现run方法
直接上代码,继承Thread类,并重写run方法,在main方法中启动线程。
publicclassMyThread1extendsThread{ publicMyThread1() { } publicvoidrun() { System.out.println(Thread.currentThread().getName()); } publicstaticvoidmain(String[] args) { MyThread1myThread1=newMyThread1(); myThread1.start(); } }
(二)实现Runable接口实现run方法
实现Runable接口,并实现run方法,在main方法中启动线程。
publicclassMythread2implementsRunnable { publicvoidrun() { System.out.println(Thread.currentThread().getName()); } publicstaticvoidmain(String[] args) { Mythread2mythread2=newMythread2(); Threadthread=newThread(mythread2); thread.start(); } }
(三)实现Callable接口实现call方法
实现Callable接口,并实现call方法,在main方法中启动线程。Callable接口有返回值,可通过FutureTask.get方法获取,具体实现看代码。
publicclassMythread3implementsCallable<String> { publicStringcall() throwsException { System.out.println(Thread.currentThread().getName()); return"success"; } publicstaticvoidmain(String[] args) throwsExecutionException, InterruptedException { Callable<String>callable=newMythread3(); FutureTask<String>futureTask=newFutureTask<String>(callable); Threadthread=newThread(futureTask); thread.run(); System.out.println(futureTask.get()); } }
(四)使用线程池实现
这里我使用最简单的单例线程池来做演示,想要了解更多关于线程池的知识可以看我的往期博客
https://juejin.cn/post/6886462817240219656
publicclassMythread4 { publicstaticvoidmain(String[] args) { ExecutorServiceexecutors=Executors.newSingleThreadExecutor(); executors.submit(newRunnable() { publicvoidrun() { System.out.println(Thread.currentThread().getName()); } }); executors.shutdown(); } }