第十七章 线程

1.进程和线程的关系:
进程包含线程,一个进程中可以有多个线程
线程不能独立存在

2.线程的实现方式:
1.继承Thread类
覆写父类方法run,在方法中写入线程的操作(一般情况下run方法中写入的是循环)
创建线程对象,调用start( )方法,启动线程。
创建线程对象:线程类 对象 = new 线程类( );
2.实现Runnable接口
覆写接口方法run,在方法中写入线程的操作(一般情况下run方法中写入的是循环)
创建线程对象,调用start( )方法,启动线程。
创建线程对象:Thread 对象 = new Thread( new 线程类( ) );
注意:Thread.sleep(1000):表示线程休眠指定时间,参数为long类型的毫秒数
注意:线程对象不允许直接run( ),需要使用start( )方法启动线程
注意:线程启动后,本行代码(线程对象.start ( ))即执行完毕,Java开始执行后面的代码
方法:
getName():获取当前线程的名称
Thread.currentThread():表示获取当前正在执行的线程,返回线程对象
setName( ):表示设置当前线程的名称
setPriority( ):表示设置当前线程的优先级。值为:1~10,值越大,优先级越高
注意:优先级只是增加了当前线程的执行几率
interrupt( ):表示打断线程
注意:不能打断休眠中的线程(打断时将抛出异常,线程继续执行)
可以打断等待中的线程
join( ):表示线程加入,当前线程向cpu申请资源执行自身
Object类提供:
wait();表示线程等待
wait(1000);表示线程等待指定时间,单位为毫秒
notify();表示随机唤醒一个正在等待的线程
notifyAll();表示唤醒所有正在等待的线程
注意:使用以上方法时,需要将当前资源锁定
3.线程的生命周期:
创建 就绪 运行 阻塞 结束

4.多线程:
启动多个线程即为多线程。一般指同一个线程类创建的多个线程对象启动
注意:线程的执行顺序与启动时间无关,只与CPU处理和线程优先级相关
CPU处理:线程竞争机制

5.线程同步:
当前变量只能被一个线程操作(线程一使用变量时其他线程不能使用此变量,只有当线程一使用完并释放资源锁时,其他线程才能被使用)。

6.实现线程同步有五种方式:
1、synchronized关键字修饰方法:表示线程同步锁,将方法锁定,同时只能有一个线程
使用。
2、synchronized块:表示线程同步锁,将资源锁定,同时只能有一个线程使用。
写法:synchronized(Object) {要同步的代码块}
注意:参数(Object)位置一般写this
3、volatile关键字修饰变量,将其锁定。
注意:会降低较多的运行速度,非必须情况不使用
本质:将修饰的变量获取方式变为直接从内存中获取,而非缓存。
4、Lock
5、Lock

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值