00:00
好,这呢是咱们今年出的这几道问题啊,这几道问题呢,其实就是咱们前一天前一天呢,其实主要呢讲了两个事情啊,第一个呢,咱们是安装了一下idea,基本的把这个idea呢配置了一下,然后通过呢,咱们讲这个多线程去大家呢熟悉一下idea的一个使用,然后另外一个点呢,就是咱们开始讲这个多线程了,诶多线程呢,咱们也讲了,能有半天多的这个时间通过出这几道问题呢,大家也能看到啊,核心的呢,还是需要大家掌握如何去创建多线程,那这也是咱们这一章的一个重点成,那今天的话呢,咱们能把这个多线程这一章呢就结束了啊,那咱们来看一下这几道问题,首先第一个说谈谈呢,你对程序进程线程的理解啊,这个咱们这个课程里边呢,也写的是对这三个的理解,这个理解呢,这个这个你别把它理解成是说这个掌握这个知识点的一个程度哈,说一种叫熟悉,一种叫理解,还有叫熟练使用,还有叫这个什么掌握,甚至还有叫精。
01:00
通是吧,这个理解呢,就是说你去清楚这三个事儿,这个不是说那个你对这个知识的程度啊,就这三个概念呢,需要大家能够说出来啊,说白就这三个概念你得能够掌握啊,实打实的确实得知道这个意思了,嗯,程序啊,这个往下走的时候呢,我看有的同学呢,就是一上来一点,然后呢,空了一段就直接二点了啊,这个就不会说这也不行啊,这个这个天天写这个代码呢,回头我们也去创建这个线程,你得知道进程是啥是吧,程序是什么,作为程序员了啊,这个咱们PPT里边呢,有这个比较算是这个官方一点的这个说明,那有的同学呢,写的也是这样的一段话,没问题,那你要是能写出这段话呢,那最好。说为完成特定任务用某种语言编写的一组指令的集合。这里边呢,有三个这个关键的词儿哈,第一个完成特定任务,其实呢,你也不用非得死记硬背,你写的程序,肯定这个程序是要干什么,对你到底要干什么,你也得奔着这个目的去,去写这个指令啊,所以说这个特定任务就是相当于你这个程序要完成什么功能,然后呢,诶计算机我们编的这个程序,它都是用计算机语言来实现的,所以呢,我们也提到了你是用哪种语言实现的啊,所以提到这个编程语言的问题,然后呢,你用的这个语言完成这个任务,你这就写这些指令,写这个代码逻辑了啊,这个逻辑呢,咱们就称作叫指令的集合了,所以这呢,你也可以看成是三个基本的要素,哎,就是这个这个理解的基础之上啊,把这个稍微记一记,如果这个呢,你呃一下子就懵了,然后呢,或者是忘了,那你最起码把后边这句话呢写上,就说程序,什么是程序呢,也就说这个一段静态的代码。
02:47
尤其呢,要强调出来这个静态,这里边儿这个静态呢,是相较于所谓的下边有个叫动态来讲的,那这个静主要指的是什么,怎么算静啊。就是这时候你没有是不是把它加载到内存当中,以及呢,没有参CPU参与去运算,是这意思吧,对,就是默默的就相当于是存储在你的这个存储空间当中了,哎,这个可能是硬盘是吧,哎这个这个意思啊,所以说呢,大家写这句话呢,最好这句话呢,如果没写出来呢,最起码你把这个红色的这句话呢得写出来啊什么叫程序呢?就是一段静态的代码啊,哎这样也可以下一个概念呢,叫做进程,进程的话呢,这个其实你就写这个红色的就行,就是我们把这个程序呢,给它执行起来,运行起来,这时候呢,它需要加载到内存空间当中,同时呢,让这个CPU呢去分配这个这个计算资源,开始去做运算了,此时呢就是一个进程,哎可以理解为呢,就正在运行的一个程序。
03:47
啊就这样啊,后边这个呢,你就可以不用写了啊,这个既然呢你是加载进来的,那就有它这个又从内存当中消亡的一个过程,消亡的这个时机,整个呢体现为叫生命周期了,那这个呢可以就不用说了,那这个呢也就不用说了啊,然后呢线程。
04:05
哎,线程呢,这一叫thread,咱们呢,在讲多线程这一章里边最重要的一个类呢,也是这个类,嗯,Thread的话呢,你就写它就行,说是一个程序内部的一条执行路径,诶一条执行路径,嗯嗯,整个这三个概念呢,大家就拿一下咱们这个,比如我这儿呢,叫360安全卫士,以它去体会就可以了,嗯,这个一开始我没有把它点开的时候呢,你会发现我们这个内存当中就没有它,嗯,现在呢,你看我打开了啊,有个它了,我要把它关掉,你看我选中的这一条它就没有了,嗯,就是你找到这个,呃,安全卫士的一个安装目录,那就相当于是一个程序了,我一点这时候呢,它就加载到这个内存当中了,此时呢就相当于是一个进程,然后呢,我在这里边每一项,诶,其实都是一个线程啊,你可以让它去同步的都执行起来,那就相当于我们这个360啊,它是支持多线程的啊,就这个意思啊,OK,这是我们说的这。
05:06
这个第一问啊,这就过了,第二个和第三个呢,这就是考察大家我们前几天讲的关于继承和实现这两种方式去创建一个线程。诶去创建一个线程,这个呢,要求所有人都必须掌握这个,凡是写不好的,这个你得好好反思一下,嗯,这这其实都不用特意的去说了啊,不用特意去说了,这块呢,这两个就过了一会咱们复习的时候呢,再提一下啊行,然后下边呢,说涉及到两种创建方式的对比,就是有没有什么联系啊是吧,然后呢,这个呃,这个你开发当中会去怎么选择呀,这种。哎,就是大家呢,以后这个还要学习很多新的知识哈,在很多知识的时候呢,都会涉及到说这种东西有好几种方式啊,那么首先一点,你关注一下大概有哪几种方式,这是其一,其二的话呢,额外的再多想一想,说这几种方式,呃,什么时候我用这个,什么时候我用那个。
06:09
啊,这个老师讲课的时候呢,通常也会说,如果老师要是比如说没说了,你自己要想一想,这是属于这个学习的一些技巧是吧,既然有好几种方式,那到底什么情况下用这个,什么情况用这个,他们有什么不同啊,哎,这个呢,你要能够想清楚的话呢,这个你相当于这个这个技术上或者这个能力上呢,就要有高一档啊嗯,对比两种方式,找个同学来说一说,看看能不能说清楚。嗯,周熊,嗯,你说一说这两种方式对比你怎么写的啊,那多实现就是相当于这种继承方式的话呢,一旦呢,你要选择这种方式,就没办法让你这个此类再去继承别的类了,相当于这种方式呢,有一定的局限性,对吧?诶这个呢,就是Java,因为实现接口是可以多实现的,不会影响继承,同时呢,实现你还可以再接着实现别的接口,诶这个从这方面它要好一些啊,然后方法,呃,它们的相同点就是都需要重写run方法,对吧?嗯。
07:21
那么开发中你选择的话呢,你会有没有什么倾向性啊,嗯,大部分呢,我们都会选择用这种接口的方式啊,叫reable这个方式啊,确实如此,还有一个点,咱们上课讲到的时候,在什么情况下,我们也会优先考虑用re,诶对,就大家有提到,就是关于共享数据的时候,对吧?呃,因为呢,咱们大家这个写这个代码的时候也看到了啊,我们呢,是造了一个renoable接口实现类的对象,把这个对象呢,你要想创建多个线程,咱们就相当于是new的这个thread了,诶newde thread你这个行参这块呢,其实就放了是我们这个reable接口实现类的对象,诶这个对象呢,比如我回头,呃,在上面提前已经造好了,叫比如叫M啊,然后下边你再去你用这个线程的时候呢,我还用这个M。
08:19
相当于这个M呢,对于我们这两个线程来讲,就是共享数据,就是共享数据了,所以说呢,对于有共享数据的这种线程,多个线程,我们reno的方式呢,其实更叫什么天然它就是这样的啊,就容易满足你这种啊处理共享数据的这个情况了啊咱们买票的时候呢,这不是写过啊,那个票数就相当于是共享数据了,咱们对于实现的方式就用不着把那个票数声明成static了,哎,就是这个原因啊好,这呢是咱们说的这个对比啊,这个内容说清楚,下一个咱们呢,昨天是开始讲这个idea啊,说这个idea的话呢,其中有两个概念叫project和module,尤其这个module呢,在咱们eclipse当中呢,是没有提到过的,那么这两个概念你是怎么理解的呢?这个我找个同学说一说吧。
09:12
找同学说一说啊,郁金松。Project相当于里面那个work,就相当里面project,嗯,行,呃,这个呢,这样解释呢,算是比较简洁的方式了,那如果说呢,这个之前用过eclipse的人啊,这样去解释的话呢,就没毛病了,就是他能够比较直接的呢,就知道哦,这有什么样的对应关系,那如果要是没有用过eclipse的人的话呢,你这样一说,反而又引入了一些新的概念是吧?就关于那个workspace呢,可引出来了啊,这个如果是对比去说的话呢,就刚才像这个于劲松说的这样就OK了啊说这个idea当中product对应咱们这个eclipse当中一个workspace,嗯,这个model呢,对应咱们原来eclipse当中的一个product。
10:05
啊,这样说没毛病,那如果说呢,要没有接触过这个eclipse的人,你去解释他的话呢,你可以这样来说哈,就是咱们呢,在idea当中,咱们首先呢,要创建一个工程,这个工程呢,属于我们这个代码中的比较顶级的一个结构了,啊,最顶级的就是一个工程。哎,然后在这个工程就是首先明确的话呢,跟咱们eclipse确实不一样啊,咱们eclipse的话呢,很多同学呃,刚开始用还确实有一些不适应,就是打开我们这个eclipse随便开一个开咱们这个0105这个workspace啊,打开以后你会发现我们在这个左边列表中呢,会列举很多的project。这有好多project,在咱们这个idea当中呢,就只能这一个啊。就只剩这一个,昨天也确实有的同学说,说这老师这个你发的这个代码,我发过去就是一个工程了,说这个我怎么把它整到这儿,明确的是整不到这儿。啊,你的呢,自己写了一个工程,然后你想把我的再整过来不一样啊,这个在idea当中,咱们这个顶级的就这一个了,或者你你可以仿照,就咱们说的那个Java的继承关系,就这就相当于是个跟服类一样,叫object,不能跟它再并列了,你要想把我那个代码整过来,咱们说是不是只能是显示多个窗口了,对你比open,呃,举个例子,比如我这我还开过一个,呃,另外的一个这个这个工程啊,就是在咱们这个idea当中,咱们要想开两个工程的话呢,你只能是开两个窗口,这个要小心一点啊,这个要注意,也就是说呢,咱们在这个idea当中,你要说这个工程呢,就是说诶,咱们一个顶级的这样的一个结构叫一个工程,就相当于你在公司当中写的这个项目,比如说你写的是个电商,那这个呢,就是整个你这个电商的这个大的项目啊,就是我们这个工程啊,然后在这个工程下面的话呢,我们去可以声明一个一个的module。
11:55
一个一个的module,咱们这呢没有啊,比如我去new一个module啊,然后呢,Next这个module的话呢,也可以去选择你具体是一个Java的一个工程,就是所谓的咱们说的那个工程啊,还是说你是一个Java e的这样的一个呃,一个工程,或者叫一个module啊,这呢,咱们还是一个Java的选一个next,呃,这个位置呢,你可以去声明,比如咱们这呢,还以这个D来说啊,咱们Java的基Java语言那个高级阶段呢,我就还从这个DAY0一开始说了,这呢我就创建了一个model。
12:25
在这个module下面呢,我们有个src,你可以接着去写代码,可以理解为就是我们这一个大的项目呢,又分成一个一个的模块,呃,每一个模块呢,我们代表的是一个module,诶你可以这样的去解释就行啊成这呢是咱们说的这个关于idea的一个理解啊,这个大家呢,稍微得注意一下啊,OK,这呢是咱们这几道问题。
我来说两句