JAVA-初步认识-第十三章-多线程(同步代码块)
一.
怎么解决程序的安全性问题。
就相当于不给其他线程机会,自己独占。
对于多条语句的封装通常用什么封装?花括号,也就是代码块。
我们现在需要这个代码块具备一定的功能,多个线程只能每次有一个线程进来操作。这个我们也可以用一个关键字来标识。
synchronized是同步的意思,
写同步代码块的时候,必须要明确是对那些代码进行同步,如果不清楚的话,就不要写同步代码块。
这里面有个对象,这个对象代表什么呢?对象相当于一个标记,标志。
那synchronized里面放什么对象,我们这里也没有对象。干脆造一个对象,
将造好的对象放置到synchronized中,为了同步造个对象有点多余。那怎么办?
我们找一个现成的对象就好了,干嘛造自然描述对象。
现在就解决了安全问题,编译运行当前程序。
但是整个结果来看,都是一个线程在运作。安全隐患是解决了,没有负数的票号出现了。但是咱程序中写的是四个线程。
再次编译运行,出现了多个
从结果来看,运行了四个线程,1和2线程有资格,没抢到执行权。
接下来的问题就是synchronized是怎么保证没有安全问题的呢?