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; / ...
随机推荐
- cocos源码分析--LayerColor的绘制过程
1开始,先创建一个LayerColor Scene *scene=Scene::create(); director->runWithScene(scene); //目标 auto layer ...
- jenkins2.0以后的版本提供自动部署和远程部署功能?
metting result comment: 持续集成:dev上使用 持续部署:在dev/uat/prod上使用 1.指定时间自动构建--发布第二天挂了?每次构建需要重新编译?qa和uat使用同一套 ...
- 性能测试day01_性能基本概念
其实第一次接触性能是15年的时候,懵懵懂懂的被领导拉去做第一次做性能压测,如今有机会重新听一下云层大大讲解性能,于是打算以此博客记录下整个学习的过程,如若有不同意见者可以在下面留言指出,也欢迎大家一起 ...
- elasticssearch+kibanna入门(撰写中)
看到一篇elasticssearch+kibanna的文章,觉得很好,不过例子是python的,所以使用java自己安装一下: https://mp.weixin.qq.com/s?__biz=MjM ...
- C#利用反射动态调用DLL并返回结果,和获取程序集的信息
反射的基本概念: .Net Framework 中提供了反射机制,可以再加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息 创建Assembly和Entity两个程序集,在Assembl ...
- SPARK快学大数据分析概要
Spark 是一个用来实现快速而通用的集群计算的平台.在速度方面,Spark 扩展了广泛使用的MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理.在处理大规模数据集时,速 ...
- ndoejs处理编码的爬虫
var express=require('express');var http=require('http');var cheerio=require('cheerio');var fs=requir ...
- js对象及元素复制拷贝
1.数组及对象拷贝: 浅拷贝var b=$.extend(false,{},a);//对象浅拷贝 var a={aa:111,bb:{bb1:22}}; var b=$.extend(false,{} ...
- PHP实现防sql注入
在查询数据库时需要防止sql注入 实现的方法: PHP自带了方法可以将sql语句转义,在数据库查询语句等的需要在某些字符前加上了反斜线.这些字符是单引号(').双引号(").反斜线(\)与 ...
- 利用STM32CubeMX来生成USB_HID_Mouse工程
硬件开发板:STM32F103C8 软件平台 好了现在开始利用STM32CubeMX来生成我们的工程 1.新建工程 选择MCU的型号 选择选择时钟 开启usb的模块 选择USB的类 配置时钟树(主要是 ...