【Java学习之道】线程的创建与启动

引言

如果你正在学习Java编程,那么你可能已经知道Java是一种多线程编程语言。多线程编程可以帮助我们更高效地利用CPU,同时完成多项任务。但是,你可能还不知道如何在Java中创建和启动线程。在本节中,我们将深入探讨Java中的线程创建和启动。

一、创建线程

Java提供了3种方式来创建线程:

【Java学习之道】线程的创建与启动_第1张图片

  1. 继承Thread
  2. 实现Runnable接口
  3. 使用Callable接口

1.1 继承Thread类

这是创建线程的最简单方式。你可以创建一个新的类,继承Thread类,然后重写run()方法。run()方法中包含了线程要执行的业务逻辑。以下是一个简单的例子:

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("MyThread is running");
    }
}

你可以通过创建MyThread的实例来启动线程:

MyThread thread = new MyThread();
thread.start();

1.2 实现Runnable接口

如果你不希望创建一个继承Thread类的子类,你可以创建一个实现Runnable接口的类。以下是一个例子:

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("MyRunnable is running");
    }
}

你可以通过创建Thread实例,然后将MyRunnable实例作为参数传递给Thread的构造函数来启动线程:

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();

1.3 使用Callable接口

Callable接口与Runnable接口类似,但是它允许你返回一个值。以下是一个例子:

class MyCallable implements Callable<Integer> {
    @Override
    public Integer call() {
        return 10;
    }
}

你可以通过创建FutureTask实例,然后将MyCallable实例作为参数传递给FutureTask的构造函数来启动线程。FutureTask可以让你获取Callable返回的值:

MyCallable callable = new MyCallable();
FutureTask<Integer> futureTask = new FutureTask<>(callable);
Thread thread = new Thread(futureTask);
thread.start();
Integer result = futureTask.get();

1.4 创建线程的3种方式比较

特性 继承Thread 实现Runnable接口 使用Callable接口
定义线程 通过扩展Thread类来定义线程的行为 通过实现Runnable接口来定义线程的行为 通过实现Callable接口来定义线程的行为
实现方式 通过继承Thread类,重写run()方法来定义线程的行为 通过实现Runnable接口,重写run()方法来定义线程的行为 通过实现Callable接口,重写call()方法来定义线程的行为
返回值 无返回值(如果线程执行的是具体任务,可以在run()方法中编写逻辑以输出结果) 无返回值(如果线程执行的是具体任务,可以在run()方法中编写逻辑以输出结果) 可返回计算结果(如果线程执行的是计算任务,可以在call()方法中编写逻辑以返回结果)
异常处理 run()方法中的异常会直接抛出,需要在主线程中处理 run()方法中的异常会抛出到调用线程,可以捕获并处理异常 call()方法中的异常会被包装为ExecutionException,可以在主线程中处理
线程状态 可以获取线程的状态(如新建、就绪、阻塞等) 可以获取线程的状态(如新建、就绪、阻塞等) 可以获取线程的状态(如新建、就绪、阻塞等)
线程同步与共享资源 可以使用synchronized关键字来实现线程同步和共享资源 可以使用synchronized关键字来实现线程同步和共享资源 可以使用synchronized关键字来实现线程同步和共享资源
使用示例 示例1:通过继承Thread类创建线程(拓展子类并重写run()方法) 示例2:通过实现Runnable接口创建线程(实现接口并重写run()方法) 示例3:通过实现Callable接口创建线程(实现接口并重写call()方法)

二、启动线程

启动线程非常简单。你只需要调用Threadstart()方法即可。start()方法会创建一个新的线程,并将你的RunnableCallable对象传递给线程。

Thread thread = new Thread(runnable);
thread.start();

结语

在本节中,我们学习了如何在Java中创建和启动线程。希望这些信息对你有所帮助。如果你有任何问题,欢迎随时向我提问。

print("Hello, world.")

亲爱的读者,我是本篇文章的作者chwt9299。感谢您抽出宝贵的时间阅读我的作品。如果对我的作品产生了共鸣,或者觉得我的观点独到有趣,请用点赞、关注、评论、收藏来表达您的喜爱吧!n_n

你可能感兴趣的:(Java学习之道,java)