00:00
好,同学们。那接下来回到我们这道面试题,推荐使用中艾对象要比奥米克long性能更好,一句话,热点商品点赞计数器请你来设计一个,那么接下来我们呢,就来尝试做一个在高并发多线程大数据这样的一个点赞。来吧。不多废话,直接上手,50个县城,每个县城100万次,总点赞数给我出来,OK好了,那么下面呢,我们呢。把各种统计方法都给大家进行一下性能的对比,让你来发现哪个更好。好,那么下面同学们in。Number等于零,那么public,那么sized VO,那假设啊,这个就是click by我们的。Snchized这么一个方法,弟兄们OK,好了,它很简单,那么相当于说number加加,这个也是一种统计,就是说如果你要调用这个方法统计。
01:00
肯定正确,点一下加个一,点一下加个一,现在这些方法都正确,关键是谁能保证在正确的前提下,谁的吞吐量并发性能更好更高,好,这是我们传统的用S。第二个,那么弟兄们,我们要凹痛一个。Long OK long等于六一个long,那么这你写不写都可以,初始值是几是零,好,那么这呢?我们也就从零开始吧,好吧,都从零开始,那接下来呢,方法呢,一样,此时注意long,我们就没有recognize了,那么VO,那么click by。奥。也就这个方法,那么它怎么来做我们对应的统计呢?那么long there get and,我们来吧,兄弟们。啥意思啊,我们这儿是不是加个讲过很多了吧,那么呢,这个呢,相当于我们的爱加加好,这是我们的第二个,第三个那么就是auto。呃呃,第三个,那么应该是我们的弄。
02:02
A好弄,A等于六。那么接下来我们的。Either go的方法很简单,就是什么零开始啊,那么现在呢,Public VO click by no either,这是我们的第三个,那么either呢,它调用的是哪个方法呢?那么也就是我们的调一下加个一,调一下加个一,OK,好,这是我们的第三个,那么第四个呢,Long acculator,累加了这个我们来吧,弟兄们。Acculator,那么根据前面的讲解。X啊加Y,用我们的拉姆达表达式,那么就是X加上Y,然后我们从零开始呢,给你进行统计,那么我们的方法呢,也就是它。OK,那么BY。这个方法,那么他所用到的就和之前稍微有点出入,那么就是accul。
03:01
啊,应该是这个啊,Long accumul刚才拷贝的时候。手误了,好,那么同学们这个呢,就是我们的四个方法,那么接下来我们来测试一下,都是统计,那么现在哪一个性能更好,分别是snchize long和long accumulate来下面呢,继续。50个线程,每个线程多少?100万次,求一个总点赞数,那么。现在int下划线,那么那么这个就是。1万。OK,那么下面我们吃呢过来。线程数是多少?50个没问题吧。走起。那么现在呢,我们的。老规矩,线程操纵资源类六。Click number,这个就是我们的资源类,这是我们的第一个,由于我们统计需要来算运行完这个方法,比如说运行完上面的某一个方法以后,之前和之后他们的时差得出这套运行。
04:05
需要花费的时间成本。那么在这我们呢,先定义这一个,因为后面我们要反复的使用啊,我呢先把它呢提出来,好待会儿我们再说,那么这是我们定义的第二组,第三一个要统计50个线程都算完了,那么来看它lunch这。没什么好说的了。对吧,那么这个呢,相当于count lunch1234,那么我们刚好有四组方法,我们呢,也拿这四组来进行处理好了,那么接下来,那么同学们。我们就要来了50个线程,每个线程点100万次,那么cost time,那么由于前面已经定义过了,我们这儿呢,直接因为后面我们会反复用啊,我就把这个定义呢放在前面,我们不是用一次,是用多次,所以说这呢。过了这,那么也就是我们的线程数是多少个?
05:02
50个线程这一波没问题吧,那么每个线程干多少下呢?那么现在大家请看搁到这儿,那么是不是100万次乘以下划线1万,我们从也就是一开始这一波没问题吧,那么好,这一波就是我们的相当于我们的业务逻辑,那么第一个可number点。点赞数,那么现在我们第一组是用SNCH的这一波,OK,那么好了,现在呢,Try finally,那么就是can lunch尺一看,干50个线程,做完一个少一个,做完一个少一个,OK,那么整个负循环做完以后。这个一,然后呢,Wait OK,那么接下来我们来算开始时间和结束时间,它总共耗费了多少秒,那么多少秒完了以后这个呢,也就是我们的什么by click synchize,它最后的result结果是什么?那么来同学们做完以后可number,那么接下来我们来看我们这是不是有个number,没问题吧,我们来看看我们由于后面要拷贝对吧,后面的。
06:17
都可以直接拷贝它,所以我们先运行一下,看看第一个正不正确,看看我们的效果能不能得到我们的预期,那么50个乘以100万,那么就是5000万次,那么现在看一下,我们用S,大家看1658毫秒值就是5000万次,没问题好了,那么这是我们的。第一组,那接下来这是我们的。第二组,那第二组呢。一样,这些都不变,但是首先要变的是方法,我们第二组用的是哪一个Li by奥?Long OK,那么这个呢,就是我第二个lunch,这些都不能错啊,大家改的时候。稍微注意一点好,那么现在就不再是这个number了,Click number这个下面是应该是long点,有个get OK,那么来同学们,这个呢,就是我们的第二组。
07:12
那接下来继续。给我亲。搁到这儿了,以后呢,是我们的第三组,那第三组就是我们的。Click by,看看和上面有没有什么差距。那么第三组。第三组来这儿就是click by no either,那它呢,也就是我们的这个资源类里面第2NO either这个属性,然后呢,Some OK,这是我们的第三组,好那。接下来最后一组long accumul带哪加功能的来看看。那现在。第二,By long accumulate,那么这个呢,是我们的第四个,看lunch好,50个线程,每个线程100万次,那么接下来。
08:04
我们来把它拿过来,这个呢是long。Click by long accumulate,那搁到这儿,那么就是我们的long accumulate,第2GET,好,那么同学们现在没什么好说的,我们现在呢,直接呢就干了,我们的这四个方法分别是一。234欧了,下面呢,运行一下效果,看看这四个在多线程高并发下面,他们的点赞效果数统计正确和性能分别是多少,大家可以看得出。如果你用syize的。数字都没问题了,1786毫秒。Long是1156,又比他好一点,但是最可怕的是我们的是long和long ACA他们两个差不多,大家请看1156,这是150在大。并发大数据的点赞情况下,性能几乎相差十倍,可是少一个位数的OK,所以说这就是为什么阿里巴巴他在这儿跟你说过,如果是Java吧,推荐使用用A,类似于这样的操作啊,要比奥米克long性能更好,因为减少乐观锁的重试次数,底层源码和原理我们下一节来分析,但是这一节我相信同学们通过我们编代码给大家单场实操,可以看出各自的性能效果。你看用挨达。
09:29
1750。120,那么这个性能不言自明,OK,所以说同学们,那么对于点赞。计数器高并发下面的如何设计和编码,那么就给大家呢介绍到这儿。
我来说两句