java多线程的几种实现方式记录

传统的实现线程的方式为三种,分别为继承Thread类,重写run()方法;实现Runable接口,重写run()方法;实现callable接口,重写call()方法;下面来记录一下最基本的三种编码实现。

一、继承Thread

public class ExtendsThread  extends Thread{

    public void run(){
        System.out.println("Hello Thread");
    }

    public static void main(String[] args) {
        ExtendsThread et1 = new ExtendsThread();
        ExtendsThread et2 = new ExtendsThread();
        et1.start();
        et2.start();
    }

}

二、实现Runnable接口

public class ImplementsRunable implements Runnable {

    public void run() {
        System.out.println("Hello Thread");
    }

    public static void main(String[] args) {
        ImplementsRunable ir1 = new ImplementsRunable();
        ImplementsRunable ir2 = new ImplementsRunable();
        new Thread(ir1).start();
        new Thread(ir2).start();
    }
}

三、实现callable接口

public class ImplementsCallable implements Callable {

    private int id;

    public ImplementsCallable(int id){
        this.id = id;
    }

    public String call() throws Exception {
        return "This Thread Id Is : "+this.getId();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService es = Executors.newCachedThreadPool();
        List<Future<String>> results = new ArrayList();
        for(int i=1;i<=10;i++){
            results.add(es.submit(new ImplementsCallable(i)));
        }
        Thread.sleep(10000);
        for(Future<String> fs : results){
            if (fs.isDone()) {
                System.out.println(fs.get());
            } else {
                System.out.println("The Thread is not down yet");
            }
        }
        es.shutdown();
    }
}

注:ExecutorService的execute()方法没有返回值,而submit()方法有返回值,类型为Future<T>。

时间: 2024-10-14 13:09:02

java多线程的几种实现方式记录的相关文章

Java多线程的两种实现方式:继承Thread类 &amp; 实现Runable接口

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! 创建和启动线程的两种传统方式: Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法.

java多线程的3种实现方式

多线程相关的问题 1.什么是进程? ? 正在执行的程序 2.什么是线程? ? 进程的子单位,一个能够完成独立功能的执行路径 3.为什么需要开启多线程? 当执行某些耗时操作的任务的时候需要开启多线程,防止线程阻塞 能够让两个任务看起来像是在同时执行 提高CPU的使用率,进而提高进程和内存的使用率 4.为什么开启多线程会同时执行? ? 因为CPU切换执行的速度太快了,肉眼无法差距 5.开启多线程是不是越多越好,提高了效率还是降低了效率? ? 不是,线程越多,效率越慢,但是太少,浪费CPU资源,所以,

Java多线程的两种实现方式的区别以及深刻同步问题中的锁对象

首先我们知道创建线程有两种方式: 1.继承Thread类:2.实现Runnable接口. 但是这两这并非完全一样的.下面谈谈区别: 因为Java并不支持多继承的(接口是可以多继承接口的.不过一般我们不提),但支持多实现.当一个类继承了父类,就不能再继承Thread类,只能通过实现接口的形式创建线程. 继承Runnable接口更加符合面向对象的思想.线程分为两部分,一是线程对象,二是线程任务.继承Thread类,线程对象和线程任务(run方法内的代码)耦合在一起.一旦创建了Thread类的子类对象

java 多线程编程三种实现方式

一种是继承Thread类,一种是实现Runable接口,还有一种是实现callable接口: 有博主说只有前面2种方式,我个人愚见是三种,主要详细介绍下callable的使用: 三种线程的我的个人理解: thread 是最简单的,简单粗暴也是最基础的,复写run()方法,start启动就好了: runable 是thread基础上的改进版本runable 主要的贡献在于实现了资源的共享,比如说在线选座的座位资源就需要共享这个时候就一定要使用runable,但是他也需要thread 的帮忙: ca

java多线程的4种实现方式

1,继承Thread类,重写run方法: public class Thread01 extends Thread{ public Thread01(){ } public void run(){ System.out.println(Thread.currentThread().getName()); } public static void main(String[] args){ Thread01 thread01 = new Thread01(); thread01.setName("继

Java 多线程的两种实现方式

继承Thead class IphoneThread extends Thread { public int iphone = 5; public String user; public IphoneThread(String str) { user = str; } @Override public void run() { while (iphone != 0) { iphone--; System.out.println(user + " get one and left iphone n

【Java多线程】两种基本实现框架

Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的,并且程序最终是以主线程的结束而结束的. Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的.每用Java命令启动一个Java应用程序,就会启动一个JVM进程.在同一个JVM进程中,有且只有一个进程,就是它自己.在这个JVM环境中,所有程序代码的运行都

JavaLearning:多线程的两种实现方式

第一种 继承Thread类 package org.fan.threaddemo; public class MyThread extends Thread{ private String name; public MyThread(String name){ this.name=name; } public void run(){//覆写run()方法 for(int i=0;i<30;i++){ System.out.println("Thread运行:"+this.name

实现Java多线程的三种方式

1. JAVA多线程实现方式    JAVA多线程实现方式主要有三种: 继承Thread类 实现Runnable接口 使用ExecutorService.Callable.Future实现有返回结果的多线程. 其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的. 2. 继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但 Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread