什么是线程多线程技术

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个的线程,进而提升整体处理性能。

什么是线程多线程技术-Worktile社区

一、多线程技术定义

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个的线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。

简单讲,1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务,多线程技术可以提高程序的执行效率,比如同时开启3条线程分别下载3个文件(分别是文件A、文件B、文件C)。

二、多线程的实现

1、通过继承Thread实现多线程

  • 在Java中负责实现线程功能的类是java.lang.Thread 类。
  • 可以通过创建 Thread的实例来创建新的线程。
  • 每个线程都是通过某个特定的Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。
  • 通过调用Thread类的start()方法来启动一个线程。

由于在Java中一个类只能继承唯一的一个类,所以这种继承Thread类实现多线程的方法具有很大的缺陷。

实现代码:

继承类:

package cn.sxt.ma.thread;
/**
 * 多线程
 * 	通过继承Thread实现多线程
 */
public class MyThread extends Thread{
	public void run () {
		for (int i = 0; i < 10; i++) {
			System.out.println("MyThread_______"+i);
		}
	}
}

测试类:

package cn.sxt.ma.thread;
/**
 * 	通过继承Thread实现多线程	
 * 		会由于CPU的分配出现抢占资源的情况
 */
public class Test {
	public static void main(String[] args) {
		MyThread mt = new MyThread();
		//调用start方法启动线程。start方法会调用线程中的run方法
		mt.start();
		for (int i = 0; i < 10; i++) {
			System.out.println("main--------"+i);
		}
	}
}

2、通过Runnable接口实现多线程

通过实现Runnable接口实现多线程解决了通过继承Thread类这种方式的缺陷。即实现Runnable接口的同时还可以继承某个类。步骤:

  • 编写类实现 Runnable 接口
  • 实现 run()方法
  • 通过 Thread 类的 start()方法启动线程

实现Runnable接口的类:

package cn.sxt.ma.runnable;
/**
 * 	实现类实现Runnable接口
 * 
 */
public class MyRunnable implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("MyRunnable-------"+i);
		}
	}
}

测试类:

package cn.sxt.ma.runnable;
/**
 * 	实现Rnnnable接口完成多线程、这种方式线程之间抢占资源更加激烈
 * 
 */
public class Test {
	public static void main(String[] args) {
		MyRunnable rb = new MyRunnable();
		//Runnable中没有start方法,所以要借助Thread的对象来使用start方法
		Thread t = new Thread(rb);
		t.start();
		//主线程中的循环
		for (int i = 0; i < 10; i++) {
			System.out.println("main--------"+i);
		}
	}
}

三、多线程技术的功能

  1. 多线程技术可以加快程序的运行速度,使程序的响应速度更快,因为用户界面可以在进行其它工作的同时一直处于活动状态。
  2. 可以把占据长时间的程序中的任务放到后台去处理,同时执行其他操作,提高效率。
  3. 当前没有进行处理的任务时可以将处理器时间让给其它任务。
  4. 可以让同一个程序的不同部分并发执行,释放一些珍贵的资源如内存占用等。
  5. 可以分别设置各个任务的优先级以优化性能。

延伸阅读

线程池

线程执行一个任务时,流程是:创建线程—创建任务—执行任务—关闭线程。而其实创建线程和关闭线程都是很耗时的,可能你的任务只有两三行代码,但是你就要创建一个线程,因为并发的线程很多,所以频繁的大量创建线程,会大大降低系统的效率。而线程池就是一个容纳多个线程的容器,池中的线程可以反复调用,省去了频繁创建线程对象的操作,节省了大量的时间和资源。

文章标题:什么是线程多线程技术,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/34871

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年1月9日 上午7:29
下一篇 2023年1月9日 上午7:47

相关推荐

  • 用例评审的目的是什么

    用例评审的目的有以下几个方面:1、提高测试覆盖率;2、确保需求的可追溯性,复审需求;3、开发工程师可带入新的测试角度;4、预防缺陷,改善开发质量。提高测试覆盖率通过对测试用例评审,完善测试的覆盖率,进而提高软件质量。 1、提高测试覆盖率 通过对测试用例评审,完善测试的覆盖率。因为在评审过程中,不同评…

    2022年12月27日
    22400
  • javaee开发工具有哪些

    javaee开发工具有:1、Eclipse;2、MyEclipse;3、Netbeans;4、Gradle;5、IntelliJ IDEA;6、JProfiler。其中,Eclipse是目前最为流行的跨平台JAVA集成开发环境,扩展性极高,很多插件可用。 1、Eclipse Eclipse 是一个开…

    2023年1月5日
    23200
  • 什么是 Functional Programming

    Functional Programming是函数式编程,或称函数程序设计,又称泛函编程,是一种编程典范,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。 Functional Pr…

    2023年2月22日
    2700
  • 好用的知识库管理系统有哪些

    这里整理了国内外最好用的10款知识库管理系统,适用对象从团队到个人,他们分别是:1、PingCode Wiki;2、Baklib;3、有道云笔记;4、印象笔记;5、RemNote;6、石墨文档;7、Notion;8、语雀;9、幕布;10、Obsidian。具体功能我们将在文章中介绍。 一、团队知识库…

    2022年3月18日
    82400
  • 产品规划用什么工具

    产品规划用的工具有:1、Excel和PPT;2、PingCode;3、Worktile;4、BoardMix;5、ProductPlan。最早期的Excel、PPT,作为万金油的工具它同样能实现路线图制作,好处是简单易用,很多人都熟悉基本操作。 一、Excel和PPT 最早期的Excel、PPT,作…

    2023年4月21日
    2500
  • 什么是UDP协议

    UDP 协议即用户数据报协议,该协议主要为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。nternet 的传输层有两个主要协议无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。 UDP 协议即用户数据报协议,…

    2023年5月29日
    400
  • 研发项目的管理流程有哪些

    研发项目的管理流程包括以下几个阶段:1、产品研发规划阶段;2、设计、试制、试验、定型阶段;3、生产技术准备阶段;4、小批试生产阶段;5、批量生产阶段。研发管理是指对研发或技术部门及其工作进行管理,重点是产品开发及测试过程。 1、产品研发规划阶段 公司最高决策层根据客户的要求和市场预测确定新产品的发展…

    2022年11月14日
    33800
  • 移动管理的方便之处有哪些

    移动管理的方便之处有:一、操作便利简单;二、处理事务高效快捷;三、功能强大且灵活;四、减少磨损,提高效率;五、方便便捷。手机和电脑信息同步,不受时间和空间限制,且操作简单,各类紧急事务皆可线上处理。 一、操作便利简单 手机和电脑信息同步,不受时间和空间限制,且操作简单,各级管理层也不用再因为日常审批…

    2023年5月23日
    400
  • 同一个SQL查询语句,为什么使用到的索引不同

    使用到的索引不同的主要原因有:一、查询条件不同;二、数据分布不同;三、数据量不同;四、数据类型不同。同一个表中的不同查询条件可能需要使用不同的索引。在同一SQL查询语句中,由于查询条件不同,可能会使用到不同的索引。 一、查询条件不同 同一个表中的不同查询条件可能需要使用不同的索引。例如,对于一个包含…

    2023年5月30日
    200
  • 如何根据需求写测试用例

    步骤:确定测试目标;确定测试类型;确定测试覆盖范围;确定测试条件;设计测试用例;执行测试用例;评估测试结果。在设计测试用例之前,需要明确测试目标。测试目标一般是根据软件需求或者用户需求来确定的。 确定测试目标 在设计测试用例之前,需要明确测试目标。测试目标一般是根据软件需求或者用户需求来确定的。测试…

    2023年3月30日
    5900

发表回复

登录后才能评论
联系我们
站长微信
站长微信
分享本页
返回顶部