00:00
好了,那咱们就接着往下看了,各位啊,再往下看了。Single我们会玩了之后啊,我们玩玩会了啊玩会了,那么这块呢,呃,我想问大家一个问题啊,问大家一个问题。呃,Java中有三大变量对不对。哪三大变量?哪三大变量,各位有一个叫什么叫实例变量是不是,还有叫啥叫静态变量对吧?哎,静态变量还有叫什么呀,叫局部变量是不是好,这个在哪存。在对中吗?是不是这个呢,在方法区吧,这个呢,是不是在占中啊。是不是好,那现在我问大家问题,这三大变量当中,哪个变量它永远都不会有线程安全问题,线程安全问题我们说了各位大家看好了啊,线程安全问题满足满足三个条件,多线程并发,有共享数据,共享数据涉及到修改的操作。
01:07
就有共享的多线程并发,并且共享的数据有修改的行为,这个时候需要考虑现场安全问题。加中三大变量,实例变量、静态变量和局部变量,这三大变量里面哪个永远都不会有现场安全问题?哪个?注意啊,以上三大变量中,局部变量永远都不会存在线程安全问题。因为局部变量不共享。因为局部变量不共享。对吧,局部变量在哪儿,在站中一个县城一个站。想没想过这个问题。一个县城一个站。局部变量在占中啊。局部变量在占中吧,所以局部变量永远不会共享吧。
02:04
永远都不会共享。嗯。但是实例变量和静态变量就有可能存在线程安全问题啊,实例变量在堆中,堆只有一个对吧,静态变量在什么呀,方法区中。方法区只有一个。堆和方法区都是什么呀?多线程什么共享的,所以可能存在什么呀?线程安全问题三大变量我今天谈判了,各位啊,局部变量是永远不会存在线程安全问题的,什么意思?我withto在这写一个,比如说特性I等于100,我问大家一个问题吧,这个I就算我把I给它改了,改成101了。这个会不会存在现场安全问题,这个I会不会存在安全问题?
03:01
各位思考一下。你T线程过来之后,这个I变量在哪存?是不是在占中?站住吗?这是不是T线程?是不是这个I是不是在这存。是不是好,那我问大家一个问题,如果T2线程执行这个方法的话,是不是T2线程有自己的站?这是不是T2线程?是不是T2线程对不对?好,T2线程在执行的过程当中,Int I是局部变量,那我们来看是在这里是不是也有一个int I等于100。那么你这个I和这个I是不是两块不同的空间?对吧。是不是你好好看看,你你你对它进行赋值101,实际上就相当于你是把你自己的这个I改成多少啊,哎,改成这个叫101。
04:06
那你下一个线程过来之后呢,执行这个方法,改这个I等于101,实际上是改的人家自己的这个I是101对吧,所以你这个局部变量在站里边存储吗?我们一直在说占嘛,这是一个站是不是,哎,这是一个站,各位我在这里给大家讲一讲啊,就是Java语言当中啊,有三个三大变量。三大变量是什么呢?是局部的,这是什么呀?实例变量如果在前面再加一个static,这叫静态变量,静态变量在方法区,实例变量在在堆区,方法区堆区只有一个,所以它可能会存在现场安全问题。但如果是在是在站里边存储的这种局部变量,像这个。像这个还有这个,它就不会存在线程按量问题,因为不共享。我很早上午之前我就给大家讲过了,我说什么呀,要形成线程安全问题,必须具备三个条件,一多线程并发,二有共享数据。共享数据很重要,你看看如果是局部变量的话,它是不是压根就不共享?
05:12
局部变量它就不共享啊。对吧,不共享,所以他并没有现场安全问题的啊好,这是一个知识点,各位啊,是一个比较重要的知识点啊。
我来说两句