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; / ...
随机推荐
- 皮卡丘检测器-CNN目标检测入门教程
目标检测通俗的来说是为了找到图像或者视频里的所有目标物体.在下面这张图中,两狗一猫的位置,包括它们所属的类(狗/猫),需要被正确的检测到. 所以和图像分类不同的地方在于,目标检测需要找到尽量多的目标物 ...
- Solr使用in语法查询
Solr可以用AND.|| 布尔操作符 表示查询的并且, 用OR.&& 布尔操作符 表示或者 用NOT.!.-(排除操作符不能单独与项使用构成查询)表示非 如果要用在查询的时候使用 ...
- [java] 求2个集合的交 差 并集
要求2个集合的交 差 并集. set集合,如下 import java.util.HashSet; import java.util.Set; public class SetTest { publi ...
- apt-get 常用命令总结
apt-get 高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器.APT可以自动下载,配置,安装二进 ...
- Python-requests设置请求的超时时间
使用timeout 参数可以设定等待连接的秒数,如果等待超时,Requests会抛出异常 >>> requests.get('http://github.com', timeout= ...
- centos7安装LNMP与Laravel遇到的一些小问题
安装LNMP 第一次安装 yum update CentOS7下 Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装 安装mySQL时,mysqld: error ...
- Jquery在表格中搜索关键字
<!DOCTYPE html><html><head> <title>ddd</title></head><body> ...
- oryx 分离&集成
公司需要用到在线的流程编辑器,我研究了下activiti,activiti-explorer 是一个 web流程编辑工具,根据我了解到的情况. activiti-explorer web流程编辑工具 ...
- linux write/wall 1
linux:/opt/software/lktest/c # wallhellllllllllllllllllllooooooooooooooooo^[[AasZZZZZZ^Clinux:/opt/s ...
- PHP企业微信授权
1.添加应用菜单. 2.access_token /** * 获取token * @return [type] [description] */ public function getToken() ...