为了账号安全,请及时绑定邮箱和手机立即绑定

细说多线程之Thread VS Runnable

难度初级
时长 1小时 0分
学习人数
综合评分9.63
171人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.5 逻辑清晰
线程的阻塞状态被解除,通常会有两种情况:1、sleep()方法的timeout时间到了,2、被notify()或者notifyAll()唤醒
File filename=new File("C:"+File.seperator()+"Daemon.txt")
这句才是精华,是跨平台操作
将票数定义成volatite,这样每次售票后,票数减一的结果将会更新到不同的窗口
//1.当类继承thread类创建多个对象的时候不能使用this当做锁的对象,锁不住,(会出现超范围,会出现重复执行)因为每一个this都代表一个对象
//解决方法.1.可以使用 类名.class(字节码对象)
//2.可以使用类实现Runnable接口(只需创建一个类对象)

//1.循环应该写在锁外边,这样会循环锁(这里的锁只是为了变量的同步设立的)
//如果把循环写在了锁里边,当某一条线程得到cpu的执行权时,就会直到循环结束,才释放锁(可是这时其它的线程在得到锁已经没有意义了,因为变量已经不再满足条件 了)
如果变量 加上volatile
Thread是类,继承,然后new自定义的类,start方法调用。
Runnable是接口,实现,然后new自定义的类,再new Thread,start方法调用。
娘炮 去哪了!!!111
换人了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
讲得逻辑清晰,很有帮助
窗口1卖了1张票,剩余票数为:2
窗口1卖了1张票,剩余票数为:2
窗口1卖了1张票,剩余票数为:2
窗口1卖了1张票,剩余票数为:0
窗口1卖了1张票,剩余票数为:1
加锁机制就全部是同一个窗口售票了
多个线程共享runnable实例里的变量,不需要同步吗?
这个说要把票变成静态的你不是初学者?你难道不知道静态属性用实例去修改时很愚蠢的编程行为么,而且线程必须要使用一个实例new出来,这里的原理是继承Thread不能共用资源,而Runnable和Callable可以共用资源
也就是说主内存的值没有刷新到副本内存中??????
最后那个窗口还是3的问题 应该是 线程阻塞了 打印的是自己副本内存的值吧??????
课程须知
学习本课程前,你需要熟练掌握Java的基础语法,熟悉Java中创建线程的两种方式,熟悉Java多线程中常用的一些方法。
老师告诉你能学到什么?
1、多线程创建方式的比较和选择 2、线程的生命周期、守护线程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消