客观地讲一下,圈子兜的有点大,不过的确是个好方法,很多人抱怨说讲的不好,实际上换个老师来讲并不一定会更好,我知道慕课流弊的老师很多,但是对于一块难啃的骨头来讲,老师真的是煞费苦心。他的目的很简单,就是让我们看到在进行多线程时如果不进行锁的操作,会造成怎样的后果,以及如何去避免,讲了 synchronized的作用,平心而论,他的目的达到了,我们不也看到数据破坏的效果么?我们也理解了,那就行了,我把话撂在这,我不认为换个老师能想出这种十分形象的可视化的效果展现在我们面前!不服的可以在评论里面写下如果是你上这课,你究竟要怎样让学生意识到数据发生了损坏?这课标明是给新手听得,听不懂基础不牢,怪老师?
2017-02-12
那个,老师,,既然继承了Thread类,何必用Thread.currentThread().getNme()来获取线程名称呢?
2017-02-11
已采纳回答 / 乱星海
三个方法里至少有一个是notifyAll。假设三个都是notify(),当方法c运行完后,flag为1,此时如果a和b都已经在Wait Set中,且随机唤醒的是b,那么b随机又进入Wait set,c也进入Wait set,此时三个线程全部进入Wait set,造成了死锁。
2017-02-09
故事讲太多了,技术内容有点少,并不想听故事。。。视频的声音也有点问题,忽大忽小,老师下次做课程还是少讲点故事吧。。。学编程本来就不是什么趣味学习,适当例子是必要的,通篇在讲故事就有点舍本逐末了。。。
2017-02-08
创建线程有两种方式:继承Thread类和Runnable接口;继承Runnable接口是将Runnaleb作为参数传入Thread中来创建线程;用户可以通过重写run方法来规定线程来做哪些事情,即任务;因为多个线程争抢cpu资源,可能会造成数据的破坏,因此可通过线程锁即synchronized(中文意思:同步的)关键字配合wait方法来过滤掉不满足条件的线程,使这些线程保持休眠状态知道被重新唤醒,而满足条件的线程继续执行,执行完毕后,通过notify()/notifyAll()方法唤醒处于睡眠状态的线程,重新竞争资源,然后再次通过线程锁重新筛选,循环往复!!!老师讲得真精彩!!大赞!!!
2017-02-07