java多线程快速入门(九)
多线程安全问题(卖火车票案例)
package com.cppdy;
class MyThread5 implements Runnable{
private Integer ticketCount=100;
@Override
public void run() {
while(ticketCount>0) {
try {
Thread.sleep(50);
} catch (Exception e) {
e.printStackTrace();
}
sale();
}
}
public void sale() {
System.out.println(Thread.currentThread().getName()+"卖出了第:"+(100-ticketCount+1)+"张票。");
ticketCount--;
}
}
public class ThreadDemo5 {
public static void main(String[] args) throws Exception{
MyThread5 mt = new MyThread5();
Thread thread1 = new Thread(mt,"窗口1");
Thread thread2 = new Thread(mt,"窗口2");
thread1.start();
thread2.start();
}
}
java多线程快速入门(九)的更多相关文章
- java 多线程 快速入门
------------恢复内容开始------------ java 多线程 快速入门 1. 进程和线程 什么是进程? 进程是正在运行的程序它是线程的集合 进程中一定有一个主线程 一个操作系统可以有 ...
- java多线程快速入门(十九)
如何停止线程 1.使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了) package com.cppdy; class MyThread15 extends T ...
- java多线程快速入门(六)
多线程应用实例(批量发送短信) 1.创建实体类 package com.cppdy; public class UserEntity { private int id; private String ...
- java多线程快速入门(一)
1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...
- java多线程快速入门(二十二)
线程池的好处: 避免我们过多的去new线程,new是占资源的(GC主要堆内存) 提高效率 避免浪费资源 提高响应速度 作用:会把之前执行某个线程完毕的线程不会释放掉会留到线程池中给下一个调用的线程直接 ...
- java多线程快速入门(二十一)
CountDownLatch(闭锁)计数器 有一个任务A,它要等待其他4个任务执行完毕之后才执行,此时就可以利用CountDownLatch来实现这种功能 package com.cppdy; imp ...
- java多线程快速入门(二十)
1.Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2.将线程不安全集合变为线程安全集合 ...
- java多线程快速入门(十八)
Lock锁是JDK1.5之后推出的并发包里面的关键字(注意捕获异常,释放锁) Lock与synchronized的区别 Lock锁可以人为的释放锁(相当于汽车中的手动挡) synchronized当线 ...
- java多线程快速入门(十七)
多线程通讯实例(必须要有多个线程.必须要管理同一个变量:线程A生产一个变量,线程B消费一个变量) package com.cppdy; class User { public String usern ...
随机推荐
- noi.openjudge 2.6.162 Post Office
http://noi.openjudge.cn/ch0206/162/ 总时间限制: 1000ms 内存限制: 65536kB 描述 There is a straight highway wit ...
- centos中文字符集,中文日志
# CentOS 7 $ firewall-cmd --zone=public --add-port=80/tcp --permanent # nginx 端口 $ firewall-cmd --zo ...
- frp中的json模块
预备知识 Go中的接口的数据结构可以分为两部分: 其中一部分指向或者存储了原始数据的值 另一部分指向或者存储了原始数据的类型描述符(其中包含类型,以及对应于接口中的方法) 所以大体上我们可以粗略的认为 ...
- elasticsearch-head安装及启动
head是用于监控Elasticsearch状态的客户端插件,包括数据可视化,增删改查工具,es语句的可视化等等. 5.0之后的安装方式如下: git clone git://github.com/m ...
- Linux 文件管理权限
这里呢我们需要掌握的是两个命令 chmod 和 chgrp和chown 视频地址:http://www.tudou.com/listplay/pA16IH7T_Sc/LuyHbR_7Yp0.html ...
- js 锚点定位【转】
锚点定义 <a name="firstAnchor">&nsbp;</a> a标签锚点使用 <a href="#firstAncho ...
- SQL语句(五)数据的修改
数据的修改 UPDATE 格式 UPDATE 表名 SET 字段名 = 字段值(这个可以是表达式) [WHERE 条件表达式] 关系运算符 (>.<.>=. <=.=.< ...
- 010、base镜像 (2018-12-27 周四)
参考https://www.cnblogs.com/CloudMan6/p/6799197.html 什么是base镜像 不依赖其他镜像,从scratch构建.或者是其他可以作为基础镜 ...
- Nginx GZIP 压缩
[ HTTP 开启gzip ] gzip on; // 开启 nginx在线实时压缩数据流: gzip_min_length 1k; // 允许压缩的页面最小字节 gzip_buffers 32k; ...
- JavaSE之概述
作此篇是鉴于个人Java学习之需要,也便于日后进一步归纳与复习. 规定: 1 Java全面概述[囊括 Java工作原理,JVM方面知识,关键字(final,static,public,pr ...