zoukankan      html  css  js  c++  java
  • 线程的创建方式

    最近在java工程师的面试中,经常被问到,请聊下线程的创建方式?而本篇文章就聊一下Java中创建线程的方式。

    第一种:继承Thread,并重写run方法

    代码如下:

    //1、继承Thread 重写run方法
    
    Thread thread=new Thread(){
    
        @Override
    
        public void run() {
    
            System.out.println(Thread.currentThread().getId()+"---->当前时间:"+LocalDateTime.now());
    
        }
    
    };
    
    //启动线程
    
    thread.start();

    第二种:实现Runnable接口,并重写run方法

    //2、线程的第二种创建方式  实现接口
    
    Runnable runnable=new Runnable() {
    
        @Override
    
        public void run() {
    
            System.out.println(Thread.currentThread().getName()+"------>"+LocalDateTime.now());
    
        }
    
    };
    
    //创建线程对象
    
    Thread thread=new Thread(runnable);
    
    //启动线程
    
    thread.start();

    第三种:Callable接口和Future接口

    在java5中,提供了Callable接口和Future接口,

    Callable接口可以是Runnable接口的增强版,Callable接口提供了一个call()方法作为线程执行体,call()方法比run()方法功能更强大Future接口来代表Callable接口里的call()方法的返回值,并为Future接口提供了一个FutureTask实现类,该实现类实现了Future接口,并实现了Runnable接口,所以这样可以作为Thread的target

    //创建对应的接口实现类和对应的返回值对象
    
    FutureTask<String> futureTask=new FutureTask<String>(new Callable<String>() {
    
        @Override
    
        public String call() throws Exception {
    
            return Thread.currentThread().getName()+"----->"+LocalDateTime.now();
    
        }
    
    });
    
    //创建线程
    
    Thread thread=new Thread(futureTask);
    
    //启动线程
    
    thread.start();
    
    System.out.println(futureTask.get());
     
    那么上述的三种创建方式有何优缺呢?
    继承Thread类来创建多线程,这种方式的优缺如下:
    优点:
            编写简单,使用当前的线程对象也很简单。
    缺点:
            因为继承了Thread类,所以不能再继承其他父类。毕竟Java只允许单继承。
    实现Runnable、Callable接口方式创建多线程的优缺如下:
    优点
            线程只是实现了Runable接口或者Callable接口,还可以继承其它类,毕竟Java允许多实现。
            多个线程可以共享同一个target对象,比较适合多个相同线程来处理同一份资源的情况,比如卖票。
    缺点:
    编程相对繁琐,如果需要使用当前线程,则必须使用Thread的currentThread()方法。
    总结:
    依据面向对象设计原则和日常的开发规范,推荐使用,实现Runnable、Callable接口的方式来创建多线程。
  • 相关阅读:
    非易失性Flash详解
    易失性存储器SRAM基础知识
    嵌入式STT-MRAM效应与流致反转
    访问SDRAM的低功耗优化设计方案
    SRAM的容量扩展
    SDRAM功耗来源
    如何使FRAM MCU速度更快所需功耗最低
    Nand Flash结构及错误机制
    提升SRAM性能的传统方法
    word在一个文档中使用多个页码,页眉
  • 原文地址:https://www.cnblogs.com/qfchen/p/10655697.html
Copyright © 2011-2022 走看看