• 实现多线程的四种方法


    1.继承Thread类,重写run方法;
    2.实现Runnable接口,重写run方法;
    3.实现Callable接口,重写call方法;
    4.通过线程池实现多线程(实现Runnable接口+Executors创建线程池);

    前2种方法无返回值,后2种方法有返回值。

    继承Thread类,重写run方法

    public class TTEST extends Thread{
     
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
        
        public static void main(String[] args) {
            Thread t1 = new TTEST();
            Thread t2 = new TTEST();
            t1.setName("线程1");
            t2.setName("线程2");
            t1.start();
            t2.start();
        }

    实现Runnable接口,重写run方法

    public class RunnableThread implements Runnable{
     
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
     
        public static void main(String[] args) {
            System.out.println(Thread.currentThread().getName());
            RunnableThread runnableThread = new RunnableThread();
            Thread t1 = new Thread(runnableThread);
            t1.setName("线程1");
            t1.start();
        }
        
    }

    实现Callable接口,重写call方法

    因为FutureTask类实现了RunnaleFuture,而RunnaleFuture又实现了Runnable接口和Future接口,通过FutureTask封装继承Callable接口的类

    import java.util.concurrent.Callable;
    import java.util.concurrent.FutureTask;
     
    public class CollableThread implements Callable<Object>{
     
        @Override
        public Object call() throws Exception {
            System.out.println(Thread.currentThread().getName());
            return null;
        }
     
        public static void main(String[] args) {
            System.out.println(Thread.currentThread().getName());
            CollableThread collableThread = new CollableThread();
            FutureTask<Object> futureTask = new FutureTask<Object>(collableThread);
            Thread t1 = new Thread(futureTask);
            t1.setName("线程1");
            t1.start();
        }
        
    }

    通过线程池实现多线程(实现Runnable接口+Executors创建线程池)

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
     
    public class PoolThread implements Runnable{
     
        private static int POOL_NUM = 10;//线程池数量
        
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
     
        public static void main(String[] args) {
            ExecutorService threadPool = Executors.newFixedThreadPool(5);
            for (int i = 0; i < POOL_NUM; i++) {
                PoolThread poolThread = new PoolThread();
                threadPool.execute(poolThread);
            }
            threadPool.shutdown();//关闭线程池
        }
        
    }
  • 相关阅读:
    Git常用命令
    更新CentOS内核
    VMware虚拟机安装Ubuntu系统步骤详解
    Ubuntu安装遇到的问题
    IOT OS and OTA
    gcc c asm,C程序内嵌汇编
    makefile and make tips
    RTEMS目录梳理Sparc
    关于FreeRTOS的信号量、队列
    FreeRTOS任务源码分析以及程序堆栈与任务堆栈的关系
  • 原文地址:https://www.cnblogs.com/lc0605/p/11738207.html
Copyright © 2020-2023  润新知