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; / ...
随机推荐
- cordova 常用操作
#创建插件 plugman create --name MyMath --plugin_id SimpleMath --plugin_version #进入插件目录 cd MyMath #plugin ...
- Delphi获取本机的MAC地址
Delphi获取本机的MAC地址: uses NB30; function GetAdaPterInfo(lana: Char): string; var Adapter: TAdapterS ...
- Linux之间用SSH传输文件 一行命令实现
把本机的文件传到目标: cd /home/ && tar czv test | ssh root@HostIP -p 22 'tar xz' 解释: 如你所见,这行命令其实由多个命令组 ...
- (转)C# WebApi 跨域问题解决方案:CORS
原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2. ...
- ZooKeeper的安装和API
Zookeeper的分布式安装和API介绍: 安装教程 在datanode1.datanode2和datanode3三个节点上部署Zookeeper. 步骤 解压zookeeper安装包到/opt/m ...
- python hashillb 模块
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法 import hashlib # ## ...
- 认识JDBC
内容: 1.JDBC介绍 2.JDBC入门 3.JDBC工具类实际使用 4.预处理对象 5.JDBC连接池 1.JDBC介绍 (1)基本概念介绍 什么是JDBC: JDBC(Java DataBase ...
- mysql之完整性约束
主要内容 not null 与 default unique primary auto_increment foreign key 约束条件作用:用于保证数据的完整性和一致性 主要分为 PRIMARY ...
- error:hadoop 中没有etc目录
download binary 而不是 source http://hadoop.apache.org/#Download+Hadoop
- python 插入html到数据库 re.escape() PyMysql
python 把html 网页源码插入到mysql 成功,部分汉字乱码是 mysql编码问题