00:03
好,这个例子呢,下来之后呢,要会写啊,自己呢尝试去写一下,看看能不能写出来,好吧,看能不能写出来。嗯,那行了,那关于线程同步这块我们就说完了,各位啊,关于我们Java语言当中的一个线程同步这块就说这么多。嗯。我们来聊一聊啊,以后我们应该怎么去解决线程安全问题,各位聊一聊啊,我们应该我们以后啊开发中应该怎么解决线程安全问题。我们去聊一下这个。我们应该怎么解决啊各位上来我们就一上来就用S的吗?一上来就用single吗?线程同步吗?
01:04
还是说怎么着啊。思考一下各位,我们以后开发中应该怎么解决线程安全问题?是一上来。就选择线程同步吗?Synchronized。不是啊,不是synchronized会让程序的执行效率降低,用户体验不好啊,会让程序的执行效率降低。用户体验不好。用户的网站啊,叫网站或者系统系统的。用户吞吐量降低。用户体验差。啊,在。
02:01
不得已的情况下。啊,在不得已的情况下再选择什么。线程同步机制。啊,再使用线程同步机制。第一种方案。尽量使用什么局部变量代替谁。代替实例变量和静态变量。注意啊。尽量使用局部变量来代替实力变量和静态变量。这样可以解决问题吧,诶第二种方案。如果必须是实例变量,那么可以考虑什么呀?可以考虑创建多个对象。
03:02
这样实例变量的内存就不共享了。就是一个线程,一个对象。一个线程对应一个对象。对吧,100个线程对应什么呀,100个对象。对象不共享没有数据安全问题对吧?对象不共享就没有数据安全问题了。你想想是不是第三种方案,如果不能使用局部变量。对吧,对象也不能创建多个。这个时候就只能选择synchronized synchronized。线程同步机制。
04:01
各位大家注意啊,就是说你以后的开发,你不能说你一上来啊,来我就我就那个什么啊,我就用那个S啊,那你这个会让你的程序的效率降低。就你你你可以首先选择局部变量来代替实力变量,静态变量。啊,首先用它。啊,首先用它以后我们学后期你就知道了,我们都是用这种方式的。啊,都是用这种方式的,局部变量的方式。局部变量,它没有现场安全问题啊,因为在站里边啊。对不对,实例变量和静态变量,它有现场安全问题啊。因为一个是在堆里边,一个在方法区,堆和方法区是共享的。那如果说你不能用局部变量,只能用实例变量的话,哎,你实例变量,实例变量就是对象相关的吧。那你创建100个对象。假如说你现在在这里创建了一个对象。对吧,又创建了一个对象,又创建一个对象,那如果是T1线程用这个对象,T2线程你用这个对象,T3线程用这个对象的话,那我问你T1T2T3是不是就不共享了。
05:06
他是不是不共享数据啊,所以这个数据数据和数据是不是就安全了。那如果说你既不能用局部变量,又不能,又不能用什么呀,创建多个对象的这种方式,那么这种情况下,你只能使用情况的这种方式了。就线程同步这种方式。啊,线程同步方式,所以这呢有一个优先级的问题,你优先采用什么,这个不行再采用这个,这个不行再采用这个,啊这里有个词叫用户的吞吐量啊,这个吞吐吞吐量其实就是并发量。并发量,你像电商网站。是不是都有一个秒杀功能,听说过吧?12306,这是不是购票系统啊。对吧,哎,像这种一到过年时候,是不是并发量是不是特别大呀。你说来咱们排队吧。是不是啊?
06:00
那用户的体验就很差。对不对,哎,用户的体验就很差。那你为了让用户的体验好。这块呢,我们可能会还是坚持采用异步的方式,但异步的方式可能会导致什么呀,导致我们数据的不安全啊,导致数据的不安全,所以说这块呢,咱们先把这个东西先简单聊一聊啊聊一聊,然后呢,呃,到后面做项目的时候,咱们再慢慢去体会这个东西啊,现在的话咱们没有合适的案例。啊,就是只能在这个这个这个这个结论上啊,给大家说一说以后应该怎么处理,怎么处理现场安全问题啊,当然县城这块最最最主要的问题,我们今天已经讲完了啊,已经讲完最最最主要的问题,各位啊,就是线程安全问题,线程安全问题,一定要把这线安全问题搞明白啊,尤其是这个SYNCH的关键,对吧,它那个锁又是这个锁,又是那个锁,又是对象锁,又是类锁,是怎么锁的对吧?它的这个它的原理是什么,好好思考一下,为什么锁了,这就就安全了。对吧,它的原理是什么,要把这个搞明白,把这个搞明白。
我来说两句