多线程的一些知识

为什么使用多线程
可以提高程序的效率,相当于多个人去完成一件事,肯定完成效率更快。

多线程适用场景
1.在高并发,分布式的开发下。
2.多线程下载技术。
3.异步发送信息。
4.异步响应,以多线程技术进行快速反应。
5.异步处理日志记录。

进程
进程相当于一个正在进行的程序,是并发执行的程序在执行过程中分配和管理资源的基本单位。

线程
线程是一个执行的小单元,也被称为“轻量级进程”,可以说一个进程至少有一个线程或多个线程。

多线程的并发
并发是指在同一个时间段内,多个线程进行交替执行,像多个人开工,最先开始这个人做,然后轮到另一个人去做,是有间隔性的,这是“多线程的并发”。

多线程的并行
并行是说在同一个时间内,多线程一起去执行运行,像多个人同时去开工做事,这是“多线程的并行”。

多线程遇到的问题

	如何解决多个线程共享用一个全局变量,可能会被其他线程干扰,会存在线程安全问题。
		使用 lock (悲观锁)或者 synchronize同步模块、cas无锁机制(乐观锁)解决问题。

	如何解决死锁现象?
		先采用诊断工具查看是否有死锁现象,若是发生死锁,进行停止操作。

多线程的复用机制
创建线程后,执行run()方法,然后不会立马停止线程,而是复用执行下一个任务。等同于一个线程执行多个任务,从而实现了复用机制。

多线程的生命周期
在这里插入图片描述

线程池的原理
提前预热创建固定的线程,一直保持在运行的状态,然后使用execute()会将任务去放入到队列里存放起来,之后在运行的线程去队列中获取任务,成功则执行run()方法。

为什么使用线程池
因为在项目中,频繁使用start()和stop()使用线程,容易对cpu造成很大的损耗**

线程池的优点
1.复用线程,减少频繁创建或stop
2.提高程序效率,减少了对cpu的损耗
3.统一管理了线程

线程池的创建方式
在项目中,一般情况不会使用“Start”启动线程,会使用线程池来进行管理,核心依赖Executors。
Executors封装了4种线程池方式,核心构造函数ThreadPoolExecuor,可根据ThreadPoolExecuor,来自定义封装线程池方式。
1.可缓存(将线程缓存起来,然后用来复用) Executors.newCachedThreadPool(); 最大线程数是Integer的最大值
2.自定义长度 Executors.newFixedThreadPool(线程数)
3.可定时 Executors.newScheduledThreadPool(“时间”)
4.单例 Executors.newSingleThreadExecutor()

示例:
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
	scheduledThreadPool.schedule(new Runnable() {
		   @Override
		   public void run() {
   				System.out.println("延迟3s");
		   }
	}, 3, TimeUnit.SECONDS);//表示延迟3秒执行

java里的队列
队列就相当于存放着固定类型的数据,遵循着先进先出的原则。

--------------------------------------From Clam Person Understanding ------------------------------------------------
--------------------------------------Only Reference For You -------------------------------------------------------------
--------------------------------------Also Hope To Get Your Advice ------------------------------------------------------

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值