21xrx.com
2024-11-05 19:44:00 Tuesday
登录
文章检索 我的文章 写文章
Java多线程实现的几种方式详解
2023-07-12 15:56:34 深夜i     --     --
Java、多线程、实现方式、详解

Java是一种纯面向对象的语言,也是一种非常适合多线程编程的语言。Java多线程编程可以使程序可以更好地利用计算机的多核处理能力,提高程序的效率。本文将详细介绍Java多线程实现的几种方式。

1、继承Thread类

这是最常见的一种方式。用户自定义类继承Thread类,重写run()方法,使用 start() 方法启动线程。

示例代码如下:


public class MyThread extends Thread {

  public void run() {

    for (int i = 0; i < 5; i++) {

      System.out.println(Thread.currentThread().getName() + ": " + i);

    }

  }

}

public class Test {

  public static void main(String[] args) {

    MyThread thread1 = new MyThread();

    MyThread thread2 = new MyThread();

    thread1.start();

    thread2.start();

  }

}

2、实现Runnable接口

这个方式相对来说比较灵活,因为Java 不支持多继承,如果一个线程已经继承了一个类,则无法继承Thread类,但是仍然可以实现Runnable接口,重写run()方法。

示例代码如下:


public class MyRunnable implements Runnable {

  public void run() {

    for (int i = 0; i < 5; i++) {

      System.out.println(Thread.currentThread().getName() + ": " + i);

    }

  }

}

public class Test {

  public static void main(String[] args) {

    MyRunnable myRunnable = new MyRunnable();

    Thread thread1 = new Thread(myRunnable);

    Thread thread2 = new Thread(myRunnable);

    thread1.start();

    thread2.start();

  }

}

3、实现Callable接口

与实现Runnable接口相似,Callable接口也需要重写call()方法,不同的是,call()方法有返回值。

示例代码如下:


public class MyCallable implements Callable<Integer> {

  public Integer call() throws Exception {

    int sum = 0;

    for (int i = 0; i < 5; i++) {

      sum += i;

    }

    return sum;

  }

}

public class Test {

  public static void main(String[] args) throws ExecutionException, InterruptedException {

    MyCallable myCallable = new MyCallable();

    FutureTask<Integer> futureTask = new FutureTask<Integer>(myCallable);

    Thread thread = new Thread(futureTask);

    thread.start();

    int sum = futureTask.get(); 

    System.out.println(sum);

  }

}

4、使用Executor框架

Executor框架可以更好地管理和调度线程池,创建线程池之后,再将任务添加到线程池中执行。

示例代码如下:


public class MyRunnable implements Runnable {

  public void run() {

    for (int i = 0; i < 5; i++) {

      System.out.println(Thread.currentThread().getName() + ": " + i);

    }

  }

}

public class Test {

  public static void main(String[] args) {

    ExecutorService executorService = Executors.newFixedThreadPool(2);

    MyRunnable myRunnable = new MyRunnable();

    executorService.submit(myRunnable);

    executorService.submit(myRunnable);

    executorService.shutdown();

  }

}

以上就是Java多线程实现的几种方式,每种方式都有各自的优缺点,开发者需要根据实际情况选择合适的方式。但总的来说,Java的多线程编程是比较方便且强大的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复