一、线程

作者: 紫荆秋雪_文 | 来源:发表于2020-06-20 15:45 被阅读0次

一、初始化线程

方式一:继承Thread

  • 自定义线程
public class Thread01 extends Thread {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getName());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
        }
}
  • 测试
public static void main(String[] args) {
        Thread01 thread01 = new Thread01();
        thread01.start();
        System.out.println("main。。。end。。。");
}
  • 测试结果
main。。。end。。。
当前线程:Thread-0
运行结果:5

方式二:实现Runnable

  • 实现Runnable
    public static class Runable01 implements Runnable {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getName());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
        }
    }
  • 运行
    public static void main(String[] args) {
        Runable01 runable01 = new Runable01();
        new Thread(runable01).start();
        System.out.println("main。。。end。。。");
    }
  • 运行结果
当前线程:Thread-0
运行结果:5
main。。。end。。。

方式三:实现Callable<T>

  • Callable实现
    public static class Callable01 implements Callable<Integer> {
        @Override
        public Integer call() throws Exception {
            System.out.println("当前线程:" + Thread.currentThread().getName());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
            return i;
        }
    }
  • 运行
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        Callable01 callable01 = new Callable01();
        FutureTask<Integer> task = new FutureTask<>(callable01);
        new Thread(task).start();
        // 等待整个线程执行完成,获取返回结果
        Integer integer = task.get();
        System.out.println("main。。。end。。。" + integer);
    }
  • 运行结果
当前线程:Thread-0
运行结果:5
main。。。end。。。5

方式四:线程池

  • 运行
    // 定义线程池
    public static ExecutorService executor = Executors.newFixedThreadPool(10);

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        executor.execute(new Runable01());
        System.out.println("main。。。end。。。");
    }
  • 运行结果
当前线程:pool-1-thread-1
运行结果:5
main。。。end。。。
  • 小结
  • 1、方式一和方式二:主线程无法获取线程的运算结果。
  • 2、方式三:主进程可以获取线程的运算结果,但是不利于控制服务器中的线程资源,可能导致服务器资源耗尽。
  • 3、方式四:通过线程池性能稳定,也可以获取执行结果,并捕获异常。

相关文章

  • Java 多线程之线程的创建及其使用

    一、创建线程以及启动线程 二、停止线程 三、线程类中函数详解 一、创建线程以及启动线程 创建线程:Java中创建线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • 泥瓦匠聊并发编程基础篇:线程与多线程必知必会

    本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程与多线程 线程是什么?线程(Thread)是一个对象...

  • java多线程基础

    多线程 线程,进程,多线程 一、java线程 1. 线程状态 2. 线程方法 方法说明setPriority(in...

  • Python多线程

    目录:一、线程的创建二、多线程互斥锁三、线程间通信四、线程池 Python并发之多线程 一、线程的创建 单线程示例...

  • Kotlin线程(4)线程管理

    等待线程结束 (join)线程让步 (yield)线程停止 一、等待线程结束   当一个线程调用其它线程(t1)的...

  • 深入理解AsyncTask

    主线程和子线程 主线程是指进程所拥有的线程,在Java中默认一个进程只有一个线程,这个线程就是主线程。主线程主要用...

  • Springboot | 线程池的学习,多线程池配置示例

    一、线程和进程,线程的生命周期二、单线程和多线程三、线程池的概念四、线程池的使用五、多线程池配置示例 一、线程和进...

  • 线程、多线程和线程池 一

    1.开启线程的三种方式? 1.继承Thread类,并复写run方法,创建该类对象,调用start方法开启线程。2....

  • 一、线程中断、线程共享、线程封闭

    一、6中线程状态定义: java.lang.Thread.State New、Runnable、Blocked、W...

网友评论

    本文标题:一、线程

    本文链接:https://www.haomeiwen.com/subject/mwnwxktx.html