IT袋

当前位置:主页 > 经验教程 > 建站编程 >

创建线程的方式有哪几种

创建线程的方式有哪几种 创建线程的方法有哪些?

时间:2024-03-18 15:00:40 来源:IT袋 作者:马勇
导读:创建线程的方式有哪几种,一篇关于创建线程的方式有哪几种的相关话题,一起来看看吧! 方式一:继承Thread类并重写run()方法。 public class CreatingThread01 extends Thread { @Override public void run() { System.o

创建线程的方式有哪几种

一篇关于创建线程的方式有哪几种的相关话题,一起来看看吧!

方式一:继承Thread类并重写run()方法。

public class CreatingThread01 extends Thread {
    @Override
    public void run() {
        System.out.println(getName() + " is running");
    }
    public static void main(String[] args) {
        new CreatingThread01().start();
        new CreatingThread01().start();
        new CreatingThread01().start();
        new CreatingThread01().start();
    }
}

采用继承Thread类方式

  • 优点: 编写简单,如果需要访问当前线程,无需使用Thread.currentThread ()方法,直接使用this,即可获得当前线程
  • 缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类

创建线程的方式有哪几种

方式二:实现Runnable接口并实现run()方法,然后将实现了Runnable接口的类传递给Thread类。

public class CreatingThread02 implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + " is running");
    }
    public static void main(String[] args) {
        new Thread(new CreatingThread02()).start();
        new Thread(new CreatingThread02()).start();
        new Thread(new CreatingThread02()).start();
        new Thread(new CreatingThread02()).start();
    }
}

采用实现Runnable接口方式:

  • 优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
  • 缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。

方式三:使用Callable和Future接口通过Executor框架创建线程。

public class CreatingThread03 implements Callable<Long> {
    @Override
    public Long call() throws Exception {
        Thread.sleep(2000);
        System.out.println(Thread.currentThread().getId() + " is running");
        return Thread.currentThread().getId();
    }
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<Long> task = new FutureTask<>(new CreatingThread03());
        new Thread(task).start();
        System.out.println("等待完成任务");
        Long result = task.get();
        System.out.println("任务结果:" + result);
    }
}

采用实现Callable接口方式:

  • 缺点:编程稍微复杂,如果需要访问当前线程,必须调用Thread.currentThread()方法。
  • 优点:线程只是实现Runnable或实现Callable接口,还可以继承其他类。这种方式下,多个线程可以共享一个target对象,非常适合多线程处理同一份资源的情形。

上面IT袋网为您介绍的创建线程的方式有哪几种的具体介绍,小编希望给网友们带来一些知识。

相关阅读

  • 什么是ajax 有什么作用

    什么是ajax 有什么作用

    为大家说一说什么是ajaxIT技巧方面的经验,请看下面详细的介绍。 1、什么是AJAX 概念:AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML AJAX作用: 与服务器进行数据交换:通过AJAX可以给服

  • 如何注册属于自己的网站账号 建立自己的网站平台步骤

    如何注册属于自己的网站账号 建立自己的网站平台步骤

    下面为网友们详细介绍如何注册属于自己的网站账号和建立自己的网站平台步骤的话题,接下来IT袋小编就来介绍。 说到创建网站,对于一些小白来说可能会很难理解,网站是个什么? 网站怎

  • Mysql数据库怎么创建视图 如何创建Mysql数据库视图

    Mysql数据库怎么创建视图 如何创建Mysql数据库视图

    为关注IT袋网网的网友们详解Mysql数据库怎么创建视图方面的讲解,具体详情如下: 在MySQL中,视图(View)是基于一个或多个表(或其他视图)的虚拟表。 视图本身不包含数据,它只是基于查

  • sql数据库卸载不干净怎么办 检测sql已卸载干净的方法

    sql数据库卸载不干净怎么办 检测sql已卸载干净的方法

    IT袋网小编为你介绍sql数据库卸载不干净怎么办和检测sql已卸载干净的方法方面的讲解,接下来分享详细内容。 电脑怎么彻底卸载sql server 2005?安装sql非常简单,但是要在卸载时将其全部清除