Thread-2

一.常见方法
1.yield();
当前获取cpu时间的线程释放cpu,但是并不代表他不会继续抢占,相反他还会和剩余的其他线程重新抢占cpu
和线程的优先级有关
2.join();
迅雷下载和迅雷看看:边下边看
需求:如果没有加载完成是无法播放的,一个线程是下载,一个线程是播放,需要保证顺序
被设置为join的线程执行完毕以后,其他线程才会继续执行
3.守护线程: Thread.setDaemon(boolean flag)
一个线程如果被设置为守护线程以后,当其他线程执行完毕,守护线程不管是否还在执行,他会强制结束
二.同步
一群人上公交车…
同步:依次排队上公交车,前面的人上了之后后面的才能上
异步:一群人上公交车,只有又能进去的位置就进去,比如窗户,后门,天窗,
异步的效率会比同步的快,但是可能会有数据的不安全的问题

多线程并发执行就容易出现线程安全问题

   原因:共享实例变量数据更新不一致
   如何解决:
   1.使用synchnorized关键字锁对象--解决完自动解锁
   2.使用synchnorized代码块     --自动解锁
   3.使用互斥锁--需要手动

死锁的概念:
高圆圆:苏老公,今天我们吃了饭去看电影
苏老公:高圆圆,今天我们看了电影去吃饭
最终互不相让—>饭没得吃,电影没得看
两个线程互相占据了对方的锁对象,
三.wait和notify
1.方法的一些使用
wait()和sleep(long time)
a.wait()他是Object类的方法,sleep他是Thread的方法
b.wait()导致线程阻塞,必须使用其他方法唤醒
c.sleep调用以后,线程会进入休眠状态,让出cpu的优先级(时间片)

2.生产者消费者模型

三个土匪分脏款:
一个老大和三个土匪历尽千辛万苦,终于抢来了10000大洋,
然后大哥给三人开三个线程分钱,前期怎么分, 发现最后得到的钱都不能凑成10000快,
三人互相猜忌,总认为大哥私藏了一部分钱或者给其中的人多分了 钱,请你帮大哥想想办法,
保证最后分的钱能够凑成10000大洋

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值