0
点赞
收藏
分享

微信扫一扫

Days 线程

鱼板番茄 2022-01-24 阅读 54

1 .多线程

1.1 程序 进程 线程

程序 : 一组命令的集合,为了完成指定的功能,程序是静态概念,一般保存在硬盘当中

进程 : 正在运行的程序,是一个动态概念,需要保存在内存当中,操作系统会分配对应的PID,当我们直接关闭某个进程的时候,该进行会在运行内存中被销毁

线程 : 一个程序中,不同的执行分支,如果同一个时间节点允许多个线程同时执行的时候,我们称为支持多线程

在Java中,main方法开始执行,就是一个线程,称为主线程

1.2 并行和并发

并行 :多个cpu 同时执行多个任务

并发: 一个cpu同时执行多个任务

多线程并行,必须cpu要大于等于2才行

单核upu是没有多线程的

1.3单核CPU和多核CPU

    1. 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程 的任务。例如:虽然有多车道,但是收费站只有一个工作人员在收费,只有收了费 才能通过,那么CPU就好比收费人员。如果有某个人不想交钱,那么收费人员可以 把他“挂起”(晾着他,等他想通了,准备好了钱,再去收费)。但是因为CPU时 间单元特别短,因此感觉不出来。
    2. 如果是多核的话,才能更好的发挥多线程的效率。(现在的服务器都是多核的)
    3. 一个Java应用程序java.exe,其实至少有三个线程:main()主线程,gc() 垃圾回收线程,异常处理线程。当然如果发生异常,会影响主线程。

1.4 多线程优缺点 和应用场景

背景: 以单核cpu为例 只使用单个线程先后完成多个任务 肯定比用多个线程来完成用的时间更短 为何人需要多线程呢

优点:  1: 提高应用程序的响应 对图形化界面更有意义 可增强用户体验

           2: 提高计算机系统cpu的利用率

          3: 改善程序结构  将又长又复杂的进程分为多个线程 独立运行 利于理解和修改

程序需要同时执行两个或多个任务]

程序需要实现一些需要等待的任务时,如用户输入,文件读写操作,网络操作,搜索等

需要一些后台运行的程序时

1.5线程创建

1.5.1

 

 1.5.2

 

1.5.3 继承和实现的区别

区别: 继承 现成代码存放了Thread的子类run方法

         实现: 现成代码存在接口的子类的run方法

实现方式的好处

避免了单继承的局限性

多个线程可以共享同一个接口实现类的对象 非常适合相同线程来处理同一份资源

1.6 优先级和常用方法

 

 1.6.2 常用方法

1.6.3 使用方法

 1.7 生命周期

 

1.8线程控制

1.8.1线程停止

 

1.8.2 线程合并

 

1.8.3 yield

 

1.9 线程同步

1.9.1 概述

 

1.9.2 不同步带来的问题

 

 

 1.9.3 解决方案

1.9.3.1 方法锁

方法使用synchronized之后,该方法只能有一个线程执行

1.9.3.2语句块锁

1.9.4Synchronized

 

 

 

 1.10 Lock

1.10.1 概述

1.10.2使用

 1.10.3 优缺点

1.11定时器任务

1.11.1概述

1.11.2使用

 

举报

相关推荐

0 条评论