首页 > 编程语言 >Java三种方法实现多线程,继承Thread类,实现Runnable接口,实现Callable接口

Java三种方法实现多线程,继承Thread类,实现Runnable接口,实现Callable接口

时间:2024-05-28 23:00:09浏览次数:24  
标签:run Thread 实现 接口 class 线程 new 多线程 public

目录

线程:

继承Thread类:

实现Runnable类:

实现Callable接口:

验证多线程:


线程:

定义:进程可以同时执行多个任务,每个任务就是线程。举个例子:一个Java程序,如果同时有两个循环同时进行,就是线程。 再比如,你用百度网盘,边看视频,边下载。

继承Thread类:

步骤写在代码里的

class mythread extends Thread
{
    @Override//2.重写run方法,将线程任务代码写在run方法里
    public void run() {
        for (int i = 0; i < 200; i++) {
            System.out.println("线程进行了"+i+"次");
        }
    }
}


class Test
{
    public static void main(String[] args) {
        //3.创建线程对象
        mythread m1=new mythread();
        //4.调用start方法开启线程
        m1.start();
    }
}

实现Runnable类:

//1.编写一个类实现Runnable接口
class myrunable implements Runnable {
    @Override//2.重写run方法,将线程任务代码写在run方法里
    public void run() {
        for (int i = 0; i < 200; i++) {
            System.out.println("线程进行了" + i + "次");
        }
    }
}


class Test1
{
    public static void main(String[] args) {
        //3.创建线程任务资源
        myrunable m1=new myrunable();
        //4.创建线程对象,将资源传入
        Thread t1= new Thread(new myrunable());
        //5.使用线程对象调用start方法开启线程
    }
}

实现Callable接口:

此方法可以有返回值

//1.编写一个类实现Callable接口,注意可以接收泛型
class mycallabel implements Callable<Integer>
{
    @Override//2.重写call方法,将线程任务代码写在call方法
    public Integer call() throws Exception {
        int sum=0;
        for (int i = 0; i < 200; i++) {
            sum+=i;
            System.out.println("线程进行了" + i + "次");
        }
        return sum;
    }
}

class Test2
{
    public static void main(String[] args) {
        //3.创建线程任务资源对象
        mycallabel m1=new mycallabel();
        //4.创建线程任务对象,封装线程资源
        FutureTask<Integer> f1=new FutureTask<>(m1);
        //5.创建线程对象,传入线程任务对象
        Thread t1=new Thread(f1);
        //6.使用线程对象调用start方法
        t1.start();
    }
}

验证多线程:

验证多线程,最简单的方法,我们拿第三种举例子。

我们在最后加上一个循环。

然后就会发现这连个循环在交替打印,说明他们就是多线程

标签:run,Thread,实现,接口,class,线程,new,多线程,public
From: https://blog.csdn.net/zgwnb666/article/details/139248588

相关文章

  • 数据结构-单向链表的实现(c语言)
    链表的定义:链表是由一系列的结点组成的,每个结点包含两个域,分别是指针域(*next)与数据域(data)。单向链表的实现//.h文件#ifndeDXLB_H#defineDXLB_H//定义结点结构体typedefstructLINKNODE{structLINKNODE*next;//指向下一个结点的指针intdata;......
  • transformer的Pytorch简易实现
    Transformer(Pytorch)fromscratchcodebyTaeHwanJung(JeffJung)@graykode,DerekMiller@dmmiller612,modifiedbyshwei;modifiedagainbyLittleHenryReference:https://blog.csdn.net/BXD1314/article/details/126187598?spm=1001.2014.3001.5506https://bl......
  • 单片机调试mipi接口屏幕记录
    问题1.RGB颜色不对和图片显示不正确(花屏)mipi参数的配置是否全部配置进去,此参数由屏幕厂商提供2.白光闪屏屏幕刷新率有关3.使用mipi屏幕播放视频方案选择3.1直接播放avi格式使用官方JPEG_MJPEG_VideoDecoding例程去播放视频3.2逐帧获取图片信息播放图片包括图片信息......
  • uniapp实现PDA扫码(广播模式)
    1.进入开发者模式查看PDA的广播动作和广播标签2.在uni-app项目里新建一个公共组件就叫pda-scan吧,放到公共组件components中,目录:components/pda-scan/pda-scan.vue<template> <view> </view></template><scriptsetup>import{onShow,onHide,onLoad,onUnload}from......
  • 如何进行接口优化?如何进行接口优化?多线程的核心参数有哪些?SpringCloud使用了哪些组件?
    在快速迭代的技术领域中,持续地回顾与总结项目经验不仅是个人成长的催化剂,也是智慧积累的关键环节,本次知识积累旨在深入剖析如何进行接口优化?如何进行接口优化?多线程的核心参数有哪些?SpringCloud使用了哪些组件?一、如何优化SQL?优化SQL语句以提高查询效率和性能是一项......
  • 3个进程实现共享内存、信号量、互斥访问
    V1.02024年5月28日发布于博客园题目设计一个程序,作为进程A,进程A专门创建一个信号量集,要求信号量集中有1个信号量,对信号量集合中的信号量进行设置,要求集合中的信号量的初值为1,然后再设计2个程序,分别是进程B和进程C,要求进程B和进程C使用进程A创建的信号量集合中的信号量实现互......
  • SAP:REUSE_ALV_LIST_DISPLAY 函数实现此类型ALV
    *&Report-1类型程序的主要功能是通过WRITE语句为用户提供方便的报表数据.*&与此功能类似的就是利用FUNCTIONALV创建的报表。利用*&REUSE_ALV_LIST_DISPLAY函数实现此类型ALV。*&---------------------------------------------------------------------**&Report......
  • SAP: REUSE_ALV_GRID_DISPLAY 函数实现此类型ALV
     *&Report-1类型程序的主要功能是通过WRITE语句为用户提供方便的报表数据.*&与此功能类似的就是利用FUNCTIONALV创建的报表。利用*&REUSE_ALV_GRID_DISPLAY函数实现此类型ALV。*----------------------------------------------------------------------**&-----......
  • Java高并发编程详解:深入理解并发核心库(Java高并发编程详解:多线程与架构设计姊妹篇) (Ja
    我的阅读笔记:并发核心库概览:首先介绍Java并发核心库的组成,包括java.util.concurrent包下的主要类和接口,以及它们之间的关系。线程池技术:详细讲解Java中的线程池技术,包括线程池的创建、配置、使用以及调优。介绍不同类型的线程池(如FixedThreadPool、CachedThreadPool等)以及它们......
  • Vue3 实现登录跳转页面
    点击登录按钮即跳转到新页面,而不是在当前页面加载组件App.Vue:<script>exportdefault{data(){return{}}}</script><template>//必须加上router-view,否则会显示空白页面<router-view></router-view></template><style></style>main......