• 多线程_02_线程创建


    java常见的创建线程的方式有三种,进阶一点还可以采用线程池进行创建,但是本质上是一样的。

    基础的创建线程通常继承Thread类,实现Runnable和Callable接口的方式也是通过实现类对象作为Thread构造方法的参数的形式进行使用。

    三种方法的主要特点:

       Thread 类,只能单继承

       Runnable接口,可以多实现

     Callable接口,可以多实现,并且可以抛出异常 和有 返回值

    1. 继承类Thread

    public class MyThread extends Thread {
        @Override
        public void run() {
            super.run();
            System.out.println("通过继承Thread创建的线程,线程名称为:" + Thread.currentThread().getName());
            System.out.println("通过继承Thread创建的线程,线程名称为:" + this.getName());
        }
    }
    

    调用方式:

    MyThread myThread = new MyThread();
    myThread.setName("thread");
    myThread.start();

    2. 实现接口Runnable

    Runnable接口截图:

    实现Runnable接口:

    package com.ahd.study;
    
    public class MyRunnable implements Runnable {
        @Override
        public void run() {
            System.out.println("通过实现Runnable接口创建的线程,线程名称为:" + Thread.currentThread().getName());
        }
    }
    

    调用:

    MyRunnable myRunnable = new MyRunnable();
    Thread thread = new Thread(myRunnable);
    thread.setName("runnable");
    thread.start();

    3. 实现接口Callable(callable实现了Runnable接口)

    Callable接口截图:

     实现Callable类:

    package com.ahd.study;
    
    import java.util.concurrent.Callable;
    
    public class MyCallable implements Callable{
        @Override
        public Object call() throws Exception {
            System.out.println("通过实现Callable创建的线程,线程名称为:" + Thread.currentThread().getName());
            return null;
        }
    }

    调用:

    MyCallable myCallable = new MyCallable();
    FutureTask task = new FutureTask(myCallable);
    Thread thread1 = new Thread(task);
    thread1.setName("callable");
    thread1.start();
  • 相关阅读:
    C++ 实现B+树
    SSM项目--
    spring+mybatis使用MapperScannerConfigurer简化配置
    SpringMVC复习总结
    MyBatis复习总结
    ajax
    几种常用页面的跳转
    MyShop-不用框架的基础javaweb项目
    jsp
    Guava 工具类之joiner的使用
  • 原文地址:https://www.cnblogs.com/aihuadung/p/13153065.html
Copyright © 2020-2023  润新知