广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java—实现多线程程序 | 入门
  • 457
分享到

Java—实现多线程程序 | 入门

java开发语言Java多线程程序多线程Thread类 2023-09-07 09:09:00 457人浏览 八月长安
摘要

  目录 一、前言 二、基本概念 进程  线程 三、Java多线程实现 java.lang.Thread类 获取线程名字及对象 获取main进程名 Thread currentThread() 四、线程优先级  设置优先级  一、前言 前

 

目录

一、前言

二、基本概念

进程

 线程

三、Java多线程实现

java.lang.Thread类

获取线程名字及对象

获取main进程名

Thread currentThread()

四、线程优先级 

设置优先级 


一、前言

前期入门学习的代码中,全部都是单线的程序,也就是从头到尾地运行

在我们平时使用手机电脑的应用程序时,它们几乎都是多线程地工作

例如idea,typora等等。本文就从现在开始,一步步尝试写多线程程序代码,一起来学习吧!


二、基本概念

进程

任何的软件存储在磁盘中,运行软件的时候,OS使用io技术,将磁盘中的软件的文件加载到内存,程序在能运行。

这里的内存大小就是电脑内存条的大小,也就是平时所说的运行内存大小,常见的有4G,8G,16G,32G甚至更高。

 应用程序运行的时候进入到内存,程序在内存中占用的内存空间就叫进程

 线程

在内存和CPU之间,建立一条连接通路,CPU可以到内存中取出数据进行计算,这个连接的通路,就是线程

 一个进程(内存资源)可以开启多个线程,也就是多条通路。

  • 并发: 同一个时刻多个线程同时操作了同一个数据
  • 并行: 同一个时刻多个线程同时执行不同的程序

 拓展一个知识,CPU(中央处理器)现在我们都会看到多少核心多少线程,对操作系统而言,一个核心同一时刻只能运行一个进程/线程,所以多核多线程CPU可以极大提升效率

 


三、Java多线程实现

java.lang.Thread类

Java万物是对象,所以线程也是对象,Thread类是线程对象的描述类

实现线程程序可以分为几个步骤:

  1. 定义一个类来继承thread类
  2. 子类重写方法run
  3. 创建子类对象
  4. 调用子类对象的start()方法启动线程

 我们用一个简单的例子来演示一下,运行一下for语句

//定义一个类来继承thread类//子类重写方法runpublic class SubThread extends Thread {    public void run(){        for(int x = 0 ; x < 50 ;x++)            System.out.println("run---"+x);    }}
public static void main(String[] args) {    SubThread subThread = new SubThread();    //创建线程程序    subThread.start();            //调用子类对象的方法start()启动线程    //启动线程,JVM调用方法run    for(int x = 0 ; x < 50 ;x++)    System.out.println("main---"+x);}

我们运行一下,不难看到两个for此时是分开工作,且符合线程的随机性(是个渣男),喜欢哪个,就运行哪个,所以你会发现,每次运行输出的结果都会不一样,无规律性

获取线程名字及对象

 既然我们成功运行了程序,那就进一步了解线程的相关知识。

线程也是有名字的,默认为thread-0,thread-1,thread-2,以此类推

要查看线程的名字,我们可以用thread类的方法getName()返回线程的名字,返回值是String类型

因为继承的是父类thread,要用其方法,也得使用super

public class ThreadName extends Thread {    public void run (){        System.out.println("线程名字:: "+ super.getName());    }}

当我们想修改线程名时,就可以使用setName()方法

   public static void main(String[] args) {        ThreadName threadName = new ThreadName();        //threadName.setName("线程1");        threadName.start();        ThreadName threadName1 = new ThreadName();        //threadName1.setName("线程2");        threadName1.start();    }

获取main进程名

前言说道,入门写过的代码,都是单线程,那这个单线程的main进程名该怎么获取,首先我们可以尝试一下让这个类继承一下thread类

当然,因为是静态static

 public static void main(String[] args){}

所以我们不能直接调用thread的getName()方法,这时我们可以使用另一个方法返回一个线程对象,然后用这个对象来调用getName()方法

Thread currentThread()

  • 静态调用,作用是返回当前的线程对象

  • "当前" , 指的是调用这个方法的线程

我们在上面的main中调用,就可以返回当前(main)的 对象

Thread thread =  Thread.currentThread();System.out.println("name::"+thread.getName());

 运行结果显示,它的线程名就为:main

 同理,也可以用此方法获取其他继承thread类的子类的线程名,代替getName()


四、线程优先级 

 所有的线程优先级都是默认的,所以会产生刚开始我们设置两个线程进行for循环,输出结果无规律的现象。默认值为5,最低为1,最高为10

设置优先级 

这次使用到的方法如下: 

setPriority()

 创建好对象后,我们调用setPriority()方法即可。

 理论上 优先级高的线程,占用CPU时间相对较长一些

t1.setPriority(MAX_PRIORITY);    //优先级最高t0.setPriority(MIN_PRIORITY);    //优先级最低

今天的Java多线程程序学习就到此为止了,喜欢的小伙伴记得点赞关注,一键三连,你们的支持就是我最大的动力,谢谢!

来源地址:https://blog.csdn.net/neadsc/article/details/132508719

--结束END--

本文标题: Java—实现多线程程序 | 入门

本文链接: https://www.lsjlt.com/news/397905.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java—实现多线程程序 | 入门
      目录 一、前言 二、基本概念 进程  线程 三、Java多线程实现 java.lang.Thread类 获取线程名字及对象 获取main进程名 Thread currentThread() 四、线程优先级  设置优先级  一、前言 前...
    99+
    2023-09-07
    java 开发语言 Java多线程程序 多线程 Thread类
  • Java多线程程序设计入门(转)
    Java多线程程序设计入门(转)[@more@]在Java语言产生前,传统的程序设计语言的程序同一时刻只能单任务操作,效率非常低,例如程序往往在接收数据输入时发生阻塞,只有等到程序获得数据后才能继续运行。随着Internet的迅猛发展,这种...
    99+
    2023-06-03
  • Java多线程之Disruptor入门
    目录一、Disruptor简介二、浅聊Disruptor的核心三、Disruptor使用3.1pom.xml3.2事件Event3.3EventFactory3.4EventHand...
    99+
    2022-11-12
  • java实现扫雷游戏入门程序
    本文实例为大家分享了java实现扫雷游戏入门程序的具体代码,供大家参考,具体内容如下 分析: 1.首先布一个10*10的雷阵,即二维数组map,每个地方都为0 2.再在雷阵中随机选取...
    99+
    2022-11-13
  • Java commons io包实现多线程同步图片下载入门教程
    目的: 实现多线程同时下载网络图片,入门级。 多线程入门 commons io: 是针对开发IO流功能的工具类库,其中包含了许多可调用的函数。 1.commons io 可直接百度,...
    99+
    2022-11-12
  • java多线程实现取款小程序
    最近java学到了多线程编程中的线程同步问题,教材中的取款小程序对于理解线程和线程同步很有帮助,在此将其补充完善. 1、建立java类 这里建立了三个java类,第一个Accoun...
    99+
    2022-11-13
  • Python多线程入门学习
    Python 中使用线程有两种方式:函数或者用类来包装线程对象。 函数式: 调用 thread 模块中的start_new_thread()函数来产生新线程。 语法如下: thr...
    99+
    2022-11-12
  • 一篇文章带你Java多线程入门
    目录多线程的四种创建方式1.继承Thread类2.实现Runnable接口3.实现Callable接口4.使用线程池线程的优先级测试Thread中常用的方法线程的生命周期多线程的同步...
    99+
    2022-11-13
  • 一篇文章带你入门java多线程
    目录一、描述二、一个线程的生命周期三、线程的优先级四、创建线程五、示例1、Runnable接口2、继承Thread3、Callable 和 Future 创建线程4、测试总结一、描述...
    99+
    2022-11-12
  • Python多线程编程入门详解
    目录一、任务、进程和线程任务进程线程进程和线程的关系二、Python既支持多进程,又支持多线程Python实现多进程Process进程类的说明Python实现多线程线程类Thread...
    99+
    2022-11-12
  • PHP入门指南:多线程编程
    PHP是一种流行的服务器端编程语言,用于创建Web应用程序和动态网站。虽然PHP本身不支持多线程编程,但它提供了一些工具和扩展,可用于实现非阻塞I/O操作和进程间通信。本文将介绍PHP多线程编程的基本知识和工具。多线程编程基础多线程编程是一...
    99+
    2023-05-20
    PHP(编程语言) 多线程编程(并发编程方式) 入门指南(针对初学者的指导文本)
  • python爬虫入门八:多进程/多线程
    引用虫师的解释: 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据。它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期。 进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间,内存,数据栈...
    99+
    2023-01-30
    爬虫 多线程 入门
  • Java中怎么实现一个多线程程序
    Java中怎么实现一个多线程程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java多线程程序设计详细解析一、理解Java多线程Java多线程是这样一种机制,它允许在程序中并...
    99+
    2023-06-17
  • java多线程怎么实现取款小程序
    今天小编给大家分享一下java多线程怎么实现取款小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、建立java类这里建...
    99+
    2023-06-30
  • C# 异步多线程入门基础
    目录进程、线程1. 进程 2. 线程 分时、分片同步、异步异步、多线程异步多线程效率多线程无序性扩展异步多线程版本下一篇:C# 异步多线程入门到精通之Thread篇 进程、线程 1....
    99+
    2022-11-12
  • 多线程python的实现及多线程有序性
    目录前言一、多线程运行无序问题二、“join方法”解决多线程运行无序问题三、threading.Thread()的常用参数总结前言 多线程一般用于同时调用多个...
    99+
    2022-11-11
  • 创建java多线程程序
    目录创建多线程程序的第一种方式:创建Thread类的子类实现步骤:创建多线程程序的第二种方式:实现RunnabLe接口java.Lang.Thread类的构造方法实现步骤:实现Run...
    99+
    2022-11-12
  • 怎么在Java中实现多线程排序
    这期内容当中小编将会给大家带来有关怎么在Java中实现多线程排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2...
    99+
    2023-06-14
  • iOS中多线程的入门使用教程(Swift)
    目录一、iOS的三种多线程技术 二、基本使用NSThread的基本使用NSOperation的基本使用GCD的基本使用总结一、iOS的三种多线程技术 1、NSThread –优点:...
    99+
    2022-05-27
    iOS 多线程
  • C#多线程学习之基础入门
    目录同步方式异步多线程方式异步多线程优化异步回调异步信号量异步多线程返回值异步多线程返回值回调线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作