首页 > 编程语言 >Java多线程三种实现方式

Java多线程三种实现方式

时间:2024-03-31 15:32:40浏览次数:28  
标签:输出 Java Thread 三种 内容 thread1 线程 多线程 public

一、继承Thread方法

public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(getName() + "输出内容");
        }
    }

    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        MyThread thread2 = new MyThread();
        thread1.setName("线程1");
        thread2.setName("线程2");
        thread1.start();
        thread2.start();
    }
}

输出结果:

线程1输出内容
线程2输出内容
线程1输出内容
线程2输出内容
线程2输出内容
线程2输出内容
线程2输出内容
线程2输出内容
线程2输出内容
线程1输出内容
线程2输出内容
线程1输出内容
线程1输出内容
线程1输出内容
线程1输出内容
线程2输出内容
线程2输出内容
线程1输出内容
线程1输出内容
线程1输出内容

         最简单的实现多线程的方法,但拓展性差,Java中只能继承一个父类,也就意味着不能继承其他类了。

二、实现Runable接口

public class MyThread1 implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "输出内容");
        }
    }
    public static void main(String[] args) {
        MyThread1 run = new MyThread1();
        Thread thread1 = new Thread(run);
        Thread thread2 = new Thread(run);
        thread1.setName("线程1");
        thread2.setName("线程2");
        thread1.start();
        thread2.start();
    }
}

         拓展性好,可以继承其他类或接口的方法,但是不能使用Thread类中的方法了。
这里获取线程名称时,使用了Thread.currentThread()静态方法来获取运行线程。

 三、实现Callable接口

public class MyThread2 implements Callable<String> {
    @Override
    public String call() {
        return Thread.currentThread().getName() + "输出结果";
    }
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyThread2 myThread2 = new MyThread2();
        FutureTask<String> future = new FutureTask(myThread2);
        Thread thread1 = new Thread(future);
        thread1.setName("线程1");
        thread1.start();
        String result = future.get();
        System.out.println(result);
    }
}

前两种方法都不能将线程运行的结果返回,实现Callable接口就可以实现线程运行结果的返回了。

通过Future来管理线程返回的内容。
其中FutureTask实现类,实现了RunnableFuture接口,RunnableFuture又继承了Runnable和 Future两个接口。

标签:输出,Java,Thread,三种,内容,thread1,线程,多线程,public
From: https://blog.csdn.net/feng_ling_01/article/details/137176888

相关文章

  • 二、Java语法基础
    1、Java语言的关键字、标识符及命名规范1)java关键字2)标识符3)JAVA中的命名规范 包名的命名规范:域名.公司名称.项目名称.模块名称 类的命名规范:首字母大写,第二个单词的首字母大写,以此类推。2、进制间的转换(二进制、十进制)1)十进制->二进制 采用除2取余算法,一直除......
  • Java中List集合
    一、ArrayList集合1.ArrayList集合的特点2.ArrayList集合的一些方法①.add(Objectelement)向列表的尾部添加指定的元素。list.add("123");//add()用于向List集合容器中添加元素。②.size()返回列表中的元素个数。list.size();//size()用于获取集合中有多少个元素。③......
  • JavaWeb学习笔记——第十天
    Springboostweb案例(一)准备工作需求说明需要完成以下功能:部门管理员工管理查询部门列表查询员工列表(分页、条件)删除部门删除员工新增部门新增员工修改部门修改员工环境搭建项目架构:准备数据库表(dept、emp)。--部门管理createtabledep......
  • Java实验报告2
    一、实验目的本实验为Java课程的第二次实验,其主要目的如下:理解继承和多态的概念;掌握域和方法在继承中的特点;掌握构造函数的继承和重载;掌握this和super的用法;二、实验原理​继承性是面向对象编程技术的最重要的基础概念之一。在面向对象的程序设计中,类的继承性......
  • 详解 Java多线程带来的的风险-线程安全
    目录一、什么是线程安全? 二、线程不安全的原因1、线程调度是随机的2、修改共享数据:多个线程修改同⼀个变量3、原⼦性 ​编辑(1)什么是原⼦性(2)⼀条java语句不⼀定是原⼦的,也不⼀定只是⼀条指令 (3)不保证原⼦性会给多线程带来什么问题(4)可⻅性:可⻅性指,⼀个线程对共......
  • 解析两大Java框架:Spring与Spring Boot的区别
    Spring框架基本介绍Spring是一个开源的Java平台,它最初是为了解决企业级应用开发的复杂性而创建的。作为一个全面的编程和配置模型,Spring提供了一个框架,让开发者可以构建轻量级、松耦合的应用。SpringBoot基本介绍SpringBoot是基于Spring的一个框架,设计理念是简化新Sp......
  • 【Java编程】【算法面试题】【数组轮转】给定一个整数数组 nums,将数组中的元素向右轮
    原题:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。例如:nums=[1,0,-1,2,3]k=1预期结果:nums=[3,1,0,-1,2]k=2预期结果:nums=[2,3,1,0,-1]以此类推。。。【本文思路解析】:1.不实用额外的数组,会多一部分开销;2.每次轮转,位置移动1位,共计移......
  • 会员制医疗预约服务管理信息系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)1.系统功能模块2.管理员功能模块......
  • 财务管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)目录1.管理员功能效果图1.1.员工功能模块2.系统功能设计3.数据库E......
  • java毕业设计基于微信公交查询小程序设计与实现
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着移动互联网技术的飞速发展,智能手机已经成为人们日常生活中不可或缺的一部分。微信作为国内领先的即时通讯软件,其小程序功能为用户提供了便捷的服务和......