随笔分类 -  JAVA初步认识-第十四章

摘要:一. 阅读全文
posted @ 2017-12-27 20:20 前锋营 阅读(151) 评论(0) 推荐(0)
摘要:一. 阅读全文
posted @ 2017-12-27 20:20 前锋营 阅读(91) 评论(0) 推荐(0)
摘要:一. 引言 前面讨论的是主要是面向对象的思想和java的基础编程,同时在多线程的基础中呢,又进行了面向对象思想的基本深化,就是说继承Tread类或者实现Runable接口,面向对象的三个特征都得以体现了。接口的出现,也将线程的执行路径和线程的任务进行了分离,降低了其耦合性。 再接着要学习的就是,日后 阅读全文
posted @ 2017-12-25 15:31 前锋营 阅读(367) 评论(0) 推荐(0)
摘要:一. 除了interrupt方法,还有其他方法, 我们要介绍线程类中常见的一些方法,比如说setDaemon, 还是结合之前的例子来讲解,t1和t2两个线程,我们中断了一个,另一个没有中断,那么DOS结果就结束不了。 可是如果在开启t2之前,将其设置成守护线程的话,守护听不懂,可以将它认为是后台线程 阅读全文
posted @ 2017-12-24 15:27 前锋营 阅读(219) 评论(0) 推荐(0)
摘要:一. 结合上一节继续讲述,不要以为设置了标记线程就能停止,依旧有停不下来的情况。 整个函数就是添加了wait()方法,导致try-catch的加入。 DOS结果显示,程序没有停下来,和主线程结束了。其余两个线程都没结束,都处于等待状态。 这两个线程拿到锁进来后,都wait停在这了。 设置标记也没用, 阅读全文
posted @ 2017-12-24 15:05 前锋营 阅读(181) 评论(0) 推荐(0)
摘要:一. 线程既然开启了,运行了,冻结又恢复运行了,那什么时候消亡呢? 怎么来停止线程呢?不能一直在运行。 线程怎么停,线程自己最清楚。在Thread类中,提供了stop方法, 本来线程持有一个锁,只要stop,它就什么都在放,这是强制操作,无论出于什么状态,强制将其搞定。本来wait,这那儿的,sto 阅读全文
posted @ 2017-12-24 09:51 前锋营 阅读(437) 评论(0) 推荐(0)
摘要:一. wait和sleep的方法有些类似,我们现在要对其进行描述,区分它们。 wait方法在object类中,而且有两种形式,分别是wait()和wait(long timeout),我们关注后者。 参数的截图中表明wait方法可以醒。 等待和睡眠的区别,睡眠是可以醒过来的,但是等待有可能是无休止的 阅读全文
posted @ 2017-12-24 09:00 前锋营 阅读(183) 评论(0) 推荐(0)
摘要:一. 一个锁挂多组监视器的情况,讲述了java.util.concurrent.locks包里面的lock接口和conditon接口的一些特点。 必须要明确,lock接口和condition接口有什么作用。 有人说连个对象都没有,老是说接口,自己实现么?lock和condition暴露的就是接口,我 阅读全文
posted @ 2017-12-24 08:22 前锋营 阅读(173) 评论(0) 推荐(0)
摘要:一. 在1.5版本中,将原先的形式进行了改变,但是功能并没有任何变化,那么这么做的原因是什么? 以前,我们一个锁上只有一组监视器,这组监视器既监视着生产者,又监视着消费者。这组监视器能将生产者和消费者全都wait,也能将生产者和消费者全都唤醒。或者notify也行,它也能将其中一条线程唤醒,而其中一 阅读全文
posted @ 2017-12-23 13:59 前锋营 阅读(170) 评论(0) 推荐(0)
摘要:一. 现在wait方法和notifyAll方法,我们比较纠结。为什么这么说,之前同步里面的锁是我们自定义的,比如this,obj,而现在这个锁是我们自己new的,并且是根据1.5之后的锁对象来完成的。 以前写this和obj时,wait方法和notifyAll方法都是在这个锁上进行的操作,现在锁没了 阅读全文
posted @ 2017-12-23 13:24 前锋营 阅读(253) 评论(0) 推荐(0)
摘要:一. 前面的过程中,while和notifyAll的加入,解决了多生产多消费程序中的问题,但是notifyAll固有的属性带了程序的降低。后期JDK升级的过程中,提供新的工具来解决效率降低的问题。 在JDK1.5版本中,将版本号改为了5.0,后面都是6.0,7.0和8.0....JDK5.0版本中提 阅读全文
posted @ 2017-12-22 08:35 前锋营 阅读(176) 评论(0) 推荐(0)
摘要:一. while的出现为了使得活过来的线程,回过来判断标记用的。可是t0醒来后,唤醒的是自己一方的线程,把本方唤醒后再判断标记,本方也就睡着了,对方没有被唤醒过,大家都睡着了。 我们希望什么,t0在唤醒的时候,至少能够唤醒一个对方,没有对方才导致我们的程序死锁。怎么唤醒对方?没有这个方法。notif 阅读全文
posted @ 2017-12-20 16:05 前锋营 阅读(149) 评论(0) 推荐(0)
摘要:一. 接下来,我们将等待唤醒机制深化。前面讲述的时候并没有体现出等待唤醒机制的精髓,下面的生产者消费者才是经典的案例。 生产,和消费是同时进行的。消费者消费的时候,看到仓库里东西没有了,就提醒生产者。生产者生产满仓库的话,就暂不生产了,直到消费者消费完了,来提醒它,再生产。 生产多少有一个数量的问题 阅读全文
posted @ 2017-12-18 10:56 前锋营 阅读(174) 评论(0) 推荐(0)
摘要:一. 上一节中的代码写的并不是很眼镜,如下图中的属性,应该都是私有的。我们不应该直接访问资源中的属性,是因为它具备了不安全性。 瞎赋值怎么办呢?为了可控,意味着资源里面的属性需要被私有化,并对外提供方法访问。因此上节中的代码要进行改写。 首先对资源描述类进行修改,至于为什么set方法中写有两个形参, 阅读全文
posted @ 2017-12-17 09:00 前锋营 阅读(180) 评论(0) 推荐(0)
摘要:一. 引言 刚才的输出中,是一片相同的连续输出。现在我们希望,每输入一次,输出端就输出一次。 在输入前要先明确一下,资源里面是否有数据。有数据的话要先输出,我们要在资源中多定义个变量,用来标记里面是否有数据。 也就是说,资源里面的数据被输出了。 上来先默认资源里面没有数据。输入拿到执行权后,先判断资 阅读全文
posted @ 2017-12-17 08:21 前锋营 阅读(316) 评论(0) 推荐(0)
摘要:一. 引言 之前讲述了线程的基本使用,卖票和存钱。卖票相当于把资源都释放出来,被别人获取到。而存钱,则是把数据都存进去。 现在,我们将线程进行了改变。以前是多个线程在执行同一个动作,无论是继承还是实现,都是一个run方法。换句话说,就是一个线程任务,多线程在同时执行一个任务。只不过它们是分别存放在了 阅读全文
posted @ 2017-12-16 14:55 前锋营 阅读(252) 评论(0) 推荐(0)