摘要:
一. 日后开发的时候,看到这样一种现象:看到了数据的错误是线程安全问题引发的,紧跟着就采取了同步措施,没想到安全问题依然存在。 这种情况很痛苦,因为这时已经没有解决方案了。 看到问题,以为同步就能解决问题,没想到解决不了。(是否说安全问题,正确地使用同步都可以解决?) 这种问题是怎么造成的呢?这里必 阅读全文
摘要:
一. 同步的原因 synchronized的代码块的封装作用,我们已经认识到了。但是它到底是怎么起到作用,现在来讨论一下。 这里面有一个对象,我们先简单地将它理解为标志位。这标志位怎么用的呢? 现在假想标志位有0和1,如果先来的默认值是1。这时,来了四个不同编号的线程,0~3。 0线程进来后,syn 阅读全文
摘要:
一. 怎么解决程序的安全性问题。 就相当于不给其他线程机会,自己独占。 对于多条语句的封装通常用什么封装?花括号,也就是代码块。 我们现在需要这个代码块具备一定的功能,多个线程只能每次有一个线程进来操作。这个我们也可以用一个关键字来标识。 synchronized是同步的意思, 写同步代码块的时候, 阅读全文
摘要:
一. 对原因进行分析一下,为什么之前没事,现在就有事。 在栈的里面,我们就不画主线程了,有四条线程路径,有自己的run方法。而这run方法如果里面写for循环,写上x的话,每个线程都有一份。 冲突吧?不冲突,都使用自己的,而当我们去卖票的时候,在运行堆里面的这个num,这个num就是多个线程所共享的 阅读全文
摘要:
一. 引言 接着看,把售票的问题给说完,这里涉及到一个小问题。 在我们进行线程任务封装,并进行线程对象创建的时候,我们发现确实通过四个线程能够将一百张票卖完。但是卖票的时候,会不会出现一些小问题呢?分析整个程序给大家展示一下。 现在有四个线程,都到了run方法中来运行。大家都知道,每个线程所属的栈区 阅读全文
摘要:
一. 需求:简单卖票程序。 怎么卖:多个窗口卖票。 一号窗口在卖票的时候,二号窗口,三号窗口也在卖票,这是同时在操作。也就是多线程。 Ticket类中的卖票代码必须要被多个线程所执行。 需求是卖票,那么名词就是票,对票进行类的描述,怎么卖票自己知道。因此,Ticket类里面必须要定义卖的方法。 由于 阅读全文