thread == 售票
import org.apache.xerces.util.SymbolTable;
public class ThreadDemo1 {
public static void main(String[] args){
Saler s1 = new Saler("wang");
Saler s2 = new Saler("zhang");
s1.start();
s2.start();
}
}
//class Saler extends Thread{
//// static Object lock = new Object();
// static int tickets = 100;
// private String name;
// public Saler(String name){
// this.name = name;
// }
// public void run() {
// while (tickets>0) {
// int currstk = tickets;
// tickets -= 1;
// System.out.println(this.name+"====》》》》》"+currstk);
//
// }
// };
//}
//class Saler extends Thread{
// static Object lock = new Object(); //java 中一切皆对象,因此,锁只是一个相对元素,是多个线程的共有的一个参照物而已。
// static int tickets = 100;//所有线程共同访问的一个元素
// private String name;
// public Saler(String name){
// this.name = name;
// }
// public void run() {
// while (tickets>0) {
// synchronized(lock) { // 同步代码块 会查看锁的状态,抢占锁,获取锁的,才能执行下面的代码,执行完毕之后,释放锁
// int currstk = tickets;
// tickets -= 1;
// System.out.println(this.name + "====》》》》》" + currstk);
// }
// }
// };
//}
class Saler extends Thread{
static int tickets = 100;//所有线程共同访问的一个元素
private String name;
public Saler(String name){
this.name = name;
}
public void run() {
while (tickets>0) {
int currTicks = getTickets();
System.out.println(this.name+">>>>>>>>>>> "+currTicks);
}
}
//同步方法
//非静态 以当前对象作为锁旗标
//静态:以类作为锁旗标。
public static synchronized int getTickets(){ // 以类作为共同的参照物,如果不加static就是以各自作为参照物。那么就是各自参考自己,
//没有统一的标准了,也就没有所谓的同步了。
int curr = tickets;
tickets -=1;
return curr;
}
};
thread == 售票的更多相关文章
- 2018.3.3 多线程中继承Thread 和实现Runnable接口 的比较(通过售票案例来分析)
多线程中继承Thread 和实现Runnable接口 的比较(通过售票案例来分析) 通过Thread来实现 Test.java package com.lanqiao.demo4; public cl ...
- 多线程(thread+queue 售票)
一.理解 如果线程里每从队列里取一次,但没有执行task_done(),则join无法判断队列到底有没有结束,在最后执行个join()是等不到结果的,会一直挂起.可以理解为,每task_done一次 ...
- JAVA多线程售票问题
//定义一个类实现Runnable接口,定义一个需要同步的售票方法,然后重写run方法调用售票的sale方法 class SaleTicket implements Runnable{ private ...
- java: Thread 和 runnable线程类
java: Thread 和 runnable线程类 Java有2种实现线程的方法:Thread类,Runnable接口.(其实Thread本身就是Runnable的子类) Thread类,默认有ru ...
- Runnable,Thread实现多线程以及Runnable的同步资源共享
(一) 实现多线程有两种方式 (1) 继承Thread类,重写run()方法,如以下例子 class MyThread extends Thread{ public void run(){ // } ...
- java 22 - 11 多线程之模拟电影院售票口售票
使用多线程实现的第二种方式: 首先创建自定义类 public class SellTicket implements Runnable { // 定义100张票 private int ticket ...
- Java多线程之Runable与Thread
Java多线程是Java开发中的基础内容,但是涉及到高并发就有很深的研究可做了. 最近看了下<Java并发实战>,发先有些地方,虽然可以理解,但是自己在应用中很难下手. 所以还是先回顾一下 ...
- Java中继承thread类与实现Runnable接口的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中, ...
- Java 多线程Thread和Runnable
Thread: class MyThread extends Thread { private int ticketsCont=5; //一共有5张火车票 private String name; / ...
随机推荐
- CRM 2016 执行IFrame 子页面中函数
CRM代码: var iframe = Xrm.Page.getControl("IFRAME_xxx").getObject(); iframe.contentWindow.Re ...
- 在线安装CM集群
https://www.cloudera.com/documentation/manager/5-0-x/Cloudera-Manager-Installation-Guide/cm5ig_insta ...
- tomcat安全加固和规范
tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐.不过,在默认配置下其存在一定的安全隐患,可被恶意攻击.以下是一些安全 ...
- 用excel批量生成insert语句
excel表格中有A.B.C三列数据,分别对应TableName的UserId.UserName.UserPwd三个字段.如下图所示 在excel的D2的位置,也就是A.B.C列的后面一列,添加下面公 ...
- Docker 核心技术与实现原理
提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...
- rpm和yum的区别
rpm 只能安装已经下载到本地机器上的rpm 包, yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的.
- java开发_""和null的区别
转自:http://www.cnblogs.com/hongten/archive/2012/11/08/java_null.html#undefined 在代码中: 1 //name可以为" ...
- asp.net 基础内容
1. ViewData ViewBag TempData 区别? 1.ViewData和TempData是字典类型,赋值方式用字典方式,ViewData["myName"] 2. ...
- promise请求数据用法
Promise简介 Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大.ES6将其写进了语言标准,统一了语法,里面保存着某个未来才回结束的事件(通常是一个异步 ...
- 设置nginx中文件上传的大小限制度
通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题: 用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_s ...