/* 需求: 模拟3个窗口同时在售50张 票 。 问题1 :为什么50张票被卖出了150次? 出现 的原因: 因为num是非静态的,非静态的成员变量数据是在每个对象中都会维护一份数据的,三个线程对象就会有三份。 解决方案:把num票数共享出来给三个线程对象使用。使用static修饰。 问题2: 出现... ...
分类:
编程语言 时间:
2017-03-19 22:19:54
阅读次数:
238
单例模式: 1.保证类在内存中只能有一个对象单例模式分为: 1.懒汉式:类一加载就创建对象 2.饿汉式:用的时候,才去创建对象相关经验: 饿汉式 (是不会出现问题的单例模式) 懒汉式 (可能会出现问题的单例模式) (1.)懒加载(延迟加载) (2.)线程安全问题 1.)是否多线程环境 是 2.)是否 ...
分类:
其他好文 时间:
2017-03-18 17:35:39
阅读次数:
124
前面的一个例子 多窗口买票实例 存在的线程安全问题描述如下: 当线程1等待到了 CPU 资源后,执行 run(),判断条件为 true,但是不会立刻执行输出语句(阻塞),此时 CPU 控制权有可能被移交给线程2或线程3,假如真的被移交,那么可能出现输出余票数为-1、-2的情况,为避免这种线程安全问题... ...
分类:
编程语言 时间:
2017-03-14 00:29:13
阅读次数:
186
Spring的scope="prototype"属性 可以利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理, 避免struts中Action的线程安全问题。这句话怎么理解呢如果用单例方式会有什么样的结果呢? spring 默认scope 是单例模式这样只会创 ...
分类:
编程语言 时间:
2017-03-13 22:03:02
阅读次数:
183
线程通讯:一个线程完成了自己的任务时,要通知另外一个线程去完成另外一个任务 生产者与消费者 通过产品建立关系 问题1:出现了线程安全问题。价格错乱。。(生产者的线程休眠10毫秒) 代码: 将上述对象改为 产品 则上述问题改变 需求,生产一个,消费一个 wait(): 等待 如果线程执行了wait方法 ...
分类:
编程语言 时间:
2017-03-08 22:49:27
阅读次数:
268
本文楼主主要以用户在售票厅购买车票为背景进行多线程的实现。假设A市到B市的车票共50张,共有3个售票窗口在进行售票,使用多线程来模拟理想情况下的用户购票: 实现Runnable的Ticket类: 简单的售票业务构建好后,我们用三个线程模拟售票窗口来进行测试: 输出结果可以看到,三个线程抢占式地将50 ...
分类:
编程语言 时间:
2017-03-07 08:44:09
阅读次数:
247
Java并发编程:synchronized 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: ...
分类:
编程语言 时间:
2017-03-01 20:57:46
阅读次数:
317
在多线程编程中,线程安全问题是一个最为核心的问题,即当多个线程访问某共享、可变数据时,始终都不会导致数据破坏以及其他不该出现的结果。而所有的并发模式解决这个问题采用的方案都是序列化访问临界资源 。在 ...
分类:
编程语言 时间:
2017-02-14 12:31:28
阅读次数:
185
原子变量 为了引出原子变量这个概念,我们先看一个例子。 程序运行结果如下: 从程序运行结果可以看出,Thread-4和Thread-6执行结果都为2,明显发生了线程安全问题,当然,这种情况是偶然的。那么,出现这种问题的原因是什么呢? 如果你对j = i++;底层是如果实现的,那么这个问题就好理解了。 ...
分类:
编程语言 时间:
2017-02-13 08:42:54
阅读次数:
205
Servlet线程安全问题: 代码示例: 路径编写总结: ...
分类:
其他好文 时间:
2017-02-07 16:01:17
阅读次数:
225