进程中有多个不同的执行路径或者多个线程的集合
正在运行的程序
进程是执行中的程序,一个操作系统可以有多个进程(系统运行多个软件)
在进程中,程序代码是怎么执行的??
在进程中一定有一个线程,这个线程叫主线程 (Java中的main)
什么是线程?
正在独立运行的程序
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
一个执行顺序,一个执行流程,执行路径
使用多线程可以提高程序的效率,提高用户的体验(一个进程,多个线程)
举例:百度网盘同时下载多个任务,极大的太高的百度网盘的效率
缺点:更多的线程需要更多的电脑内存空间
- 每个线程都互不影响,独立运行
线程的常用方法:
1.获取当前的线程:Thread.currentThread
2.返回该线程的标识符:getId
3.返回该线程的名:getName
4.返回线程优先级:getPriority
5.获取当前线程状态:getState
6.测试线程是否处于活动状态:isAlive
7.线程是否为守护线程:isDaemon
8.是否已经中断:isInterrupted
多线程的应用场景:多线程下载,爬虫,前端开发ajax(异步上传),分布式job(需要同时一个执行多个任务调度)
线程的优先级:
Thread.MIN_PRIORITY::最高优先级(10)
Thread.MAX_PRIORITY:中等优先级(5)
Thread.NORM_PRIORITY:最低优先级(1)
创建线程有哪些方式:
- 使用继承Therad类的方式
- 使用实现runnable接口方式
- 使用匿名内部类方法
- callable
- 使用线程池创建线程
什么是同步,什么是异步?
同步: 代码从上往下进行执行
异步(多线程):多线程之间,每个程序互不影响,不同步执行---cpu执行权
多线程运行状态:
- 新建状态
- 就绪状态
- 阻塞状态
- 运行状态
- 死亡状态
join()方法作用:让其他线程变为等待
yield方法的作用:暂停当前正在执行的线程,并执行其他线程