概念:
程序(program):一段代码,一个应用(问题)
官方一点:是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。 (程序是静态的)
进程(process):(大脑)
是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域。 (进程是动态的)是一个动的过程 ,进程的生命周期 : 有它自身的产生、存在和消亡的过程
线程(thread):(思路)
进程可进一步细化为线程, 是一个程序内部的一条执行路径。
多线程:一个大脑在思考问题的时候可以有多条思路
多进程:电脑打开多个应用程序,为其分配资源---->多进程
每个应用程序需要不同的资源,由其所属的进程为其分配----->多线程
注意:CPU在执行任务的时候,是按照时间片执行的,一个时间片只能执行一个线程,但是呢,时间片时间间隔特别短,看起来就像一起执行。
并行:多个CPU同时执行多个任务
并发:一个CPU”同时“执行多个任务(时间片轮转/切换)
创建线程的三种方式
第一种:继承Thread类
第二种:实现Runnable接口
第三种:实现Callable接口
线程的生命周期
就一张照片:
线程常见的方法
方法
1、start():启用当前线程,表面上调用start()方法,实际在调用线程里面的run()方法
2、run():线程类 继承Thread类 或者 实现Runnable接口的时候,都要重写run方法,run方法里面的东西就是线程要执行的内容。
3、currentThread():Tread类里面的一个静态方法:获取当前正在执行的线程
4、setName():设置线程名字
5、getName():读取线程的名字
6、join():当一个线程调用join方法后,这个线程就会先被执行
7、sleep():人为制造阻塞
8、setDaemon():将子线程设置为主线程的伴随线程,(一荣俱荣,一损俱损)
设置伴随线程 注意:先设置,再启动
优先级
1、同级:先到先服务
2、不同级:级别高的被CPU调度概率大(默认级别5)
级别1(底)~10(高)
线程安全问题
问题:买票出现多个人买到了同一张票。
原因:多个线程,在争抢资源的过程中,导致共享的资源出现问题。
一个线程还没进行完,另一个线程就参与进来了。
解决方案:“锁”,加同步---》同步监视器