00:01
各位同学大家好,下面呢,我们继续来学习GUUC高并发编程,在上节的内容中呢,咱们讲到了GC的基本概念,包括带着各位同学咱们复习了一下进程的线程中的基本概念,那下面呢,我们进入到我们内容中的第二讲,第二讲呢,给大家讲doc中一个重要的接口,这接口叫做look接口。然后大家看这单词lock什么意思,是不是有锁的意思,其实就是GC里边针对所操作的一个接口,那学这个接口之前,咱们首先先复习一个重要的关键字,这个关键字叫做SNE,它是Java中一个很重要的关键字,用于实现锁的操作,那咱们下面呢,把这关键字我们先做一个复习。那咱们来看一下,首先看一下我的课件中这个的关键字,它里边是Java中一个重要的关键字,是一种同步从然后它的修饰现象有以下几种情况,那我们来看一下啊,首先第一个我们可以写一个S的加上一个代码块,也就是类似于这种形式给大家写一下。
01:18
现在我这里边。我们写上一个叫这个的,然后在里边呢,锁定你的这个内容,比如说我是一个这次,然后加上一个括号,这就是一个同步代码块,然后在这个代码块里的内容会起到一个锁的这个相换作用,然后第二个呢,用S呢可以修饰一个方法,那这里边被修饰的方法称为一个叫同步方法,另外用它可以定义一个静态方法,包括一个类,而静态方法和类它的作用对象或者作用范围有它不一样的地方,所以这是关于S的这么一个关键字,一个说明。然后针对它里边的各种范围,咱们后面专门有节会讲到它里边的各种情况,就这里面我会说到大家看。
02:08
我们会通过sight的八种所的情况给大家会演示它的特点,现在各位先用一个基本的认识,关于这个S的关键字,然后咱们下面呢,我们先用这个sight的关键字来实现一个最基本一个卖票的例子,通过这个卖票例子,让大家先感受一下咱们这个多线程编程的一个基本过程,让大家知道我们要写一个多线程代码,到底该怎么去写。那说这个之前呢,首先给大家说一下,当我们现在啊,比如说我们要写一个多线程的这么一个代码,那这个步骤该怎么去做呢?给各位来说一下。就是多线程的编程步骤,这个步骤给各位强调哈,它没有什么特别的,是一个比较固定的这么一个流程,或者是一个固定的套路,那我这里边呢,给大家先总结多线程编程步骤的上部,当然咱有中部和下部,咱先看看上部怎么做,在上部里边呢,我们主要有两个过程,那两个过程我先写一下,然后给大家详细解释一下,最终咱们再用代码把这实现。
03:25
那我们来看一下啊,首先第一步怎么做呢?咱们先创建一个叫资源类,在这个资源类里边,我们可以创建属性和它的操作方法,我先写完,然后给大家解释,然后里边呢就是第二步。第二步怎么做呢?咱就创建多个线程,然后在多个线程中去调用你资源类里边那个操作的方法,所以第一个就是多线程编程步骤,这个上部它就是这么一个过程,那这过程是怎么样的?给大家说的具体点,首先我们看第一步叫做创建资源类。
04:08
那什么叫资源类呢?给各位举个例子啊,首先我强调,我觉得各位同学啊,应该都见过一个东西叫做空调。各位应该都见过,特别是在我们目前的夏天,空调基本上每天我们都在使用,那大家想一下啊,这个空调有什么功能?它能干什么?是不是可以做无外乎这么久功能吗?要么制冷,制热,除湿,包括啊什么送风等等这些功能,当然大家注意啊,这些功能是不是都是由空调提供好的,而咱们拿到空调是不是只能直接用这些功能?再举个例子,比如说大家想一下啊,空调在设计的时候,他好像没跟你商量过吧,他就直接把功能设计好,然后把空调给你,你买来之后,里边有什么功能,那咱是不是就可以用什么功能,如果没有功能,那咱是不是就不能去用,这就叫资源类比,就说好比说我们现在空调就是一个资源类,然后空调里边的有它各个的功能,然后咱们现在我可以去操作空调,比如这空调所有人都可以买,所有人对空调是不是都可以操作,操作的是不是都是里边这些功能,包括制冷、制热、除湿、送风等等,所以咱们写多线程也是这个流程,第一步就是咱们建个资源类。
05:29
然后在资源类中呢,封装你的属性和方法,这方法咱给它都封装好了,然后封装之后呢,我们再建多个线程去调用资源类中的各个方法,最终实现难的功能,也就是说这个过程呢,其实也用到了这么一个思想,这思想各位同学应该也知道,叫做高内聚低耦合,什么意思,就是现在空调里面的功能属性咱都封装好了,然后它有什么,那咱就用什么。
06:01
没有的话,咱是不是就不用了,跟我的调用没有关联,就是它有什么我调什么,没有那我就不能调用,所以这就是我们提到的多线程编程步骤的前两步,第一步建资源类里边属性方法,第二步写多线程调用资源类中的方法,最终实现我们的最终功能。所以这个步骤要各位给他知道。那这个说完之后呢,下面呢,给各位我就来写端代码,咱们通过这个C和nice这么一个关键字来实现一个简单的卖票的例子,比如说如果想实现啊,就是用三个售票员,然后最终能卖出30张票,我想来做这个例子。我写一下啊,就是三个售票员。最终卖出这个30张票,那大家想的过程啊,按照我们的步骤,比如说现在我的过程中,我们要按照步骤,第一步肯定是建个资源类,那大家说目前我的过程中谁是我们的资源?
07:07
谁是资源?咱是不是要卖票,票是不是就是咱的资源,所以我针对票建个资源类,这是第一部分,然后在资源类中呢,咱们建属性,属性什么意思?咱是不是有30张票,那我这个30张票,这个票的数量就是我的属性。另外有一个操作方法,咱们票有什么方法,就是卖票,所以这个卖就是方法,最终咱们可以建三个线程,就是三个售票员,让他们分别去调用咱这个卖票方法,最终把这过程定实现。所以这个是我们要写的这个代码,而三个售票员在卖30张票过程中,大家可以想一下啊,比如三个售票员,比如说假如说我有A售票员,比如说A售票员呢,他比较能干,他一个人把三张票是不是可以都卖完,或者说三个售票员可以平均卖,所以这个过程肯定是随机的,它可能多,它可能少,所以咱下面就用这个s net关键字来模拟出一个三个售票员卖出30张票这个过程。
08:15
下面咱把这个代码我们来写一下,过程呢,就是按照我刚才说这个多线程的编程步骤,我们最终做一个实现。
我来说两句