(十二)你能说出四种创建线程的方式吗?

简介: Java中创建线程的方式主要有四种:1.继承Thread类实现run方法2.实现Runable接口实现run方法3.实现Callable接口实现call方法4.使用线程池实现

微信搜索《Java鱼仔》,每天一个知识点不错过


(一)每天一个知识点


你能说出四种创建线程的方式吗?


(二)回答


Java中创建线程的方式主要有四种:


1.继承Thread类实现run方法


2.实现Runable接口实现run方法


3.实现Callable接口实现call方法


4.使用线程池实现


(一)继承Thread类实现run方法


直接上代码,继承Thread类,并重写run方法,在main方法中启动线程。


publicclassMyThread1extendsThread{
publicMyThread1() {
    }
@Overridepublicvoidrun() {
System.out.println(Thread.currentThread().getName());
    }
publicstaticvoidmain(String[] args) {
MyThread1myThread1=newMyThread1();
myThread1.start();
    }
}

(二)实现Runable接口实现run方法


实现Runable接口,并实现run方法,在main方法中启动线程。


publicclassMythread2implementsRunnable {
@Overridepublicvoidrun() {
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> {
@OverridepublicStringcall() 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() {
@Overridepublicvoidrun() {
System.out.println(Thread.currentThread().getName());
            }
        });
executors.shutdown();
    }
}


相关文章
|
4月前
|
Java C++
关于《Java并发编程之线程池十八问》的补充内容
【6月更文挑战第6天】关于《Java并发编程之线程池十八问》的补充内容
44 5
|
5月前
|
Java 测试技术
Java多线程的一些基本例子
【5月更文挑战第17天】Java多线程允许并发执行任务。示例1展示创建并启动两个`MyThread`对象,各自独立打印&quot;Hello World&quot;。示例2的`CounterExample`中,两个线程(IncrementThread和DecrementThread)同步地增加和减少共享计数器,确保最终计数为零。这些例子展示了Java线程的基本用法,包括线程同步,还有如Executor框架和线程池等更复杂的用例。
51 0
|
5月前
|
Java
Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
45 1
|
5月前
|
缓存 Java 程序员
程序员的金三银四:创建线程池有哪几种方式?
程序员的金三银四:创建线程池有哪几种方式?
52 0
线程基础知识点
本章讲解了线程的相关知识
40 0
如何处理JDK线程池内线程执行异常?讲得这么通俗,别还搞不懂
本篇 《如何处理 JDK 线程池内线程执行异常》 这篇文章适合哪些小伙伴阅读呢? 适合工作中使用线程池却不知异常的处理流程,以及不知如何正确处理抛出的异常
|
Linux 调度 数据库
linux系统编程(十一)线程同步(完结)(上)
linux系统编程(十一)线程同步(完结)
167 0
linux系统编程(十一)线程同步(完结)(上)
|
Linux
linux系统编程(十一)线程同步(完结)(下)
linux系统编程(十一)线程同步(完结)
182 0
linux系统编程(十一)线程同步(完结)(下)
java学习之高级语法(十八)----- 等待唤醒机制和线程池
java学习之高级语法(十八)----- 等待唤醒机制和线程池
java学习之高级语法(十八)----- 等待唤醒机制和线程池
|
Java
面试官:Java线程有几种创建方式?
面试官:线程有几种创建方式? 这个也太简单了叭~ 😝 继承 Thread 类 步骤如下: 创建一个类继承 Thread 重写 run 方法 调用 Thread 类的 start 方法 类图~ 代码如下 public class MyThread extends Thread{ @Override public void run() { System.out.println(this.getClass().getSimpleName()); } public static void main(String[] args) {
152 0
下一篇
无影云桌面