JavaSE--day13--多线程

概念:

程序(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(高)

线程安全问题

问题:买票出现多个人买到了同一张票。

原因:多个线程,在争抢资源的过程中,导致共享的资源出现问题。

一个线程还没进行完,另一个线程就参与进来了。

解决方案:“锁”,加同步---》同步监视器

方法一:同步代码块

方法二:同步方法

方法三:Lock锁

线程同步的优缺点

线程通信问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值