摘要:
一. 前面的过程中,while和notifyAll的加入,解决了多生产多消费程序中的问题,但是notifyAll固有的属性带了程序的降低。后期JDK升级的过程中,提供新的工具来解决效率降低的问题。 在JDK1.5版本中,将版本号改为了5.0,后面都是6.0,7.0和8.0....JDK5.0版本中提 阅读全文
摘要:
一. while的出现为了使得活过来的线程,回过来判断标记用的。可是t0醒来后,唤醒的是自己一方的线程,把本方唤醒后再判断标记,本方也就睡着了,对方没有被唤醒过,大家都睡着了。 我们希望什么,t0在唤醒的时候,至少能够唤醒一个对方,没有对方才导致我们的程序死锁。怎么唤醒对方?没有这个方法。notif 阅读全文
摘要:
一. 接下来,我们将等待唤醒机制深化。前面讲述的时候并没有体现出等待唤醒机制的精髓,下面的生产者消费者才是经典的案例。 生产,和消费是同时进行的。消费者消费的时候,看到仓库里东西没有了,就提醒生产者。生产者生产满仓库的话,就暂不生产了,直到消费者消费完了,来提醒它,再生产。 生产多少有一个数量的问题 阅读全文
摘要:
一. 为什么会讲述图解,是因为目前DOS给出的一些结果有写颠覆了原有的思想体系。多线程在执行时,cpu切换这执行,不同的内容交叉着出现。但是之前我们讲,一个函数只有执行完了才会弹栈,没执行完不会弹栈。现在通过图解来解释这一切。 以上面的截图来研究图解,我们只研究栈,其他的不做探讨。 以前的内存图解是 阅读全文
摘要:
一. 不同的运行,导致over的位置发生了变化。为什么呢?我们这里至少有三个线程。三个线程之间来回随机切换。 接下来我们想知道的问题就是,我们开启了多个线程,怎么区分现在正在运行的线程是谁?多个线程随机切换,我们怎么区分。 区分的方法到哪儿找?到thread类中去寻找。线程怎么区分,线程自己最清楚。 阅读全文
摘要:
一. 既然是创建线程,那么线程应该怎么创建?在没有学习java之前,这些程序是谁在操作执行的呢?是由我们所在的操作系统来完成的。Windows里面有个任务管理器,它来管理这些任务,它来创建这些进程,并来创建进程中所用的线程。是由系统来完成的,我们无法直接使用系统来帮我们做这件事情。解决问题的时候,首 阅读全文
摘要:
一. 我们关注的重点在于主线程,我们一般不关注垃圾回收,因为这个动作是自动的,它是以什么方式来判断的呢?堆内存中一旦产生垃圾,它是不会立即去清理的,如果立即去清理的话会降低效率。因为垃圾回收在操作时,会和主线程抢夺cpu的控制权(获取cpu的执行权)。在某一时刻谁拿到执行权,谁就操作。接下来就是什么 阅读全文
摘要:
一. 我们学java程序学到现在,到底是多线程的,还是单线程的?(现实中多线程是一直存在的,我们只是才开始学习这个概念而已,没学过不代表不存在。) 虚拟机的启动本身就依赖了多条线程,为什么? 举例来看,(举实例来研究多线程) New了三个匿名对象,画一个堆内存演示一下。 左边是栈,右边是堆。栈里面有 阅读全文
摘要:
一. Java的程序我们已经把它封装在包里面了,java的程序很多的情况下,包很多的情况下,我们把它塞成一个文件。这样显得更为方便。 这个压缩工具有什么好处?可以把多个目录合成一个文件。 Java中也有一个这样的打包工具,就是jar。可惜的是,jar并不是图形化界面的工具,它是DOS的工具。 怎么来 阅读全文
摘要:
一. 讲到现在发现,有包不如没包,源程序中书写类名要写很长(类名的前缀包很多时)。类文件的层次结构太多,包太多,显得很麻烦。 如果不愿意写这么长的名字,我们有一些解决办法。我们可以通过一个关键字来做这件事情,让你能实现相同的功能。 上图就是导入DemoA的包,我觉着导入就意味着将位置由所属的其它包, 阅读全文