00:00
来接着搞咱们这个synchronized啊,接着搞,但是刚才拐弯了,各位啊,拐弯了不好意思,Synchronized的这个东西大家理解了吗。Single是遇到这个共享对象吗?如果是T1T20,现在共享的对象是不是T1T2,就会排队执行这个代码?好,我现在再问大家一个问题啊,这个大括号越小是不是效率越高?就同步代码块越小,效率越高。同步的代码块如果扩的越大,是不是效率就越低?是这样吗?是这样啊。那么我问大家一个问题啊,假如这是withdraw方法里边的加了一个synchronized。那我假如说这个我不加,我加到这个地方行吗。我加到第19行的外边,我在这加一个SYNCH行不行。
01:03
能不能保证安全?能不能各位思考一下?我加到run方法里边加一个行不行。行吗?这个不要了。这个不要了。这个不要了。哎哟,这这这这不能不要。干啥呢,这个不要就完了啊。上面这个呢,我也注释掉。我在方法里面不写了。我就写这么一个代码,然后在这个地方我加一个synchronized。这个行吗?这写共享对象啊,共享对象是谁啊,是不是他。
02:01
对吧,好,大家想这样写行不行啊,可以吧,哎,没问题。同样可以达到效果啊,来走。是不是,哎,没有任何问题,但是一定要记住啊,这种方式啊,它会扩大范围。就相当于是扩大了个范围,你把这个withdraw方法全部都给扩住了。明白吧,等于是扩大了这个同步的范围啊,这种方式也行,只不过是扩大了同步范围啊,这种方式也可以,只不过扩大了同步的范围,效率更低了。啊,效率更低了,这个地方为什么能这这这个地方能写this吗?能写这个词吗,各位?可以写这吗?这个this代表的是线程对象吧,好,你线程丢了几个?
03:02
俩对象是不是俩内存地址。这边能写this吗?不能吧?因为这个this是谁呀。是现成对象啊。现场对象你就溜了两次啊,所以你这么做的就完了。对象不共享,是两把锁,两个线程获取两把锁很简单,你看。是不是,哎,你要吃透它啊,你把它吃透了,你写写这个肯定不行,你写它。就可以。因为你这个参数是负了一次值,你拗了一次,你把这个参数传进去了,你把这个参数怎么着传进去了。所以你再执行,你看就没问题。是吧,哎,所以这个地方它不是随便写的,这不是随便写的啊,这个他不是随便写的。对,你要这么写,你就synchronized,然后括号里面写个this,这不行,这不行啊,这里的this是哪个对象?
04:07
是account thread对象,这个对象不共享。因为你现成对象扭了两次啊。对吧,是两个内存地址啊。所以这个就不行了,这个行。啊,在执行。嗯嗯。啊,可以了吧,哎,可以了啊。
我来说两句