00:00
同学们。我们上节课呢,已经把接收消息啊,按照图上来看,接收消息的工作线程的代码已经写好了。但是呢,我们必须要准备出两个以上的工作线程来完成本次的这个叫三者关系,是竞争关系,一个消息只能被处理一次的这种实验。能够最终看到这个效果。所以必须要两个以上的工作线程。才能看到这个效果。那么我们这时候用到了我们的工具。我们的这个idea工具是吧,它是可以启动多个。多个线程的。将工作线程启动一次,再启动一次。那么现在呢?在没有设置的情况下,此时此刻你启动多个应该是会报错的。所以呢,我们不妨这么的,首先呢,先将第一个工作线程启动起来。
01:00
那么一旦启动多个,我们对每一个工作线程最好能起个名字不一样的名字,所以呢,在这个位置一旦接收完消息之后,或者是把代码写完之后,或者是在这个位置都是可以的找一个位置。哎,进行打印一下。表示自己的身份。例如,我们第一个工作线程就叫C。说,所以这个时候就可以写C。来等待。等待接收。消息完了呢,点儿点儿点儿点儿点儿对。来六个点儿。那么一旦C1启完之后,我们接下来就该启动C2,所以总共是准备是准备两个工作线程,第一个工作线程名字叫C,哎,给它起上名字叫C。就这意思是吧,完了呢,给第二个工作线程起名叫C2。
02:00
如果你有第三个,你再起C3,这样的目的是为了不区分不同的工作线程,好知道是哪个工作线程接收了我们的消息的。消消息队列中的消息。对吧,所以呢,我们先这么的,先C1等待接收消息,这样时候呢,你先把它启动起来。你看这时候C1等待接收消息就已经来了,完了,这个时候呢,为了启动多个线程,当然了每个线程的这个代码是一模一样的,所以没有必要再写一份啊,也没有必要再复制一份,完全可以在工具当中,咱们的idea当中这个位置可以进行一下配置。例如你看WORKER01,它在这个位置可以勾选一下,例如允许多线程,多个线程进行。呃,运转,所以你把这一勾。勾完之后呢,紧接你点应用,哎,点OK,此时此刻你再运行一个线程,就是另外一个线程了,所以我们这个位置可以在最后给它改成C2。
03:08
C完二之后呢,你对这个main函数再进行一次运行,这就是另外一个线程。好,你看另外一个线程叫C12等待接收。前一个是C1,等待接收,同学们一定要注意看,这个位置呢,有两个界面窗口,这个呢明显是C1,哎,这个明显是C2,对它们是不同的。线程我们切一下啊,你看C一切不动了,切这门你看一切C2怎么的,这两个窗口代表C1,代表C2。这就表示是两个工作线程已经被启动了。剩下的任务呢,你就再写一个生产者来大量的发消息,让我们两个消费者能够接收消息,而且接收消息的情况是轮训分发消息,就是你一条我一条,你一条我一条,也就意味着C1和C2应该是每人各接收一条。
04:10
如果你发两条的话,如果你发四条数据呢,就是每人各接收两条数据。而且是彼此交互的,就例如我接收一号消息,你得接收二号,完了我接收三号消息,你接收四号消息。这你一条我一条,你一条我一条的情况。好,这个呢,消费者工作线程两个我们已经准备好了。当然你准备三个也是可以的,只不过把这改成C,改成C3,完了呢,再运行一遍就是第三个工作线程。我们本次只是为了实验测试,所以呢,我们只起两个就可以了。
我来说两句