java多线程

多线程

1.几个概念

程序:静态的代码

进程:操作系统调度和分配资源的最小单位

线程:程序内部的执行路径

线程调度策略

分时调度:所有线程'轮流使用'CPU的使用权,并且平均分配每个线程占用CPU的时间

抢占式调度:让‘优先级高’的线程以‘较大的概率’优先使用CPU,如果线程的优先级相同,那么随机选择一个(线程随机性),Java使用的是抢占式调度

>单核CPU与多核CPU >并行与并发

2.如何创建多线程

1:继承Thread类

2:实现Runnable接口

3:实现Callable接口

4:使用线程池

3.Thread类的常用方法、线程的生命周期

1.线程中的构造器 - public Thread():分配一个新的线程对象 - public Thread(String name):分配一个指定名字的1新的线程对象 - public Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法 - public Thread(Runnable target,String name):分配一个带有指定目标的新的线程对象并指定名字

2.线程中的常用方法 >start():启动线程,调用线程的run()方法 >run():将线程要执行的操作,声明再run中 >currentThread():获取当前执行代码对应的线程 >getName():获取线程名 >setName():设置线程名 >sleep():静态方法,调用时,可以使得当前线程睡眠指定的毫秒数 >yield():一旦执行此方法,就释放CPU的执行权 >join():线程a中通过线程b调用join(),意味线程a进入阻塞状态,直到线程b执行结束,线程a才结束阻塞状态,继续执行 >isAlive():判断当前线程是否还存在

过时方法 >stop():强行执行进入死掉 >void suspend()/void resume() 可能造成死锁 不建议使用

3.线程的优先级 getPriority():获取线程的优先级 setPriority():设置线程的优先级,范围【1,10】

Thread类内部声明的三个常量: -MAX_PRIORITY(10):最高优先级 -MIN_PRIORITY(1):最低优先级 -NORM_PRIORITY(5):普通优先级

线程的生命周期的State

jdk5.0及之后:Thread类

4.如何解决线程的安全问题

什么是线程的安全问题?多个线程操作共享数据,就有可能出去安全问题

如何解决?有几种方式?

同步机制:1.同步代码块 2.同步方法

重点关注:共享数据及操作共享数据的代码

注意:在实现Runnable接口的方式中,同步监视器可以考虑使用:this 在继承Thread类的方式中,同步监视器慎用this,可以考虑使用当前类.class

说明:

如果操作共享数据的代码完整的声明在了一个方法中,那么我们就可以将此方法声明为同步方法即可 非静态的同步方法,默认同步监视器是this 静态的同步方法,默认同步监视器是当前类的本身

jdk5.0新增:Lock接口及其实现类

5.同步机制相关的问题

懒汉式的线程安全的写法

同步机制带来的问题:死锁

6.线程间的通信

同步机制下,考虑线程间的通信

wait(),notify(),notifyAll()都需要使用在同步代码块或同步方法中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值