zoukankan      html  css  js  c++  java
  • 线程模拟售票问题

    线程是我们学习Java知识中一个重要的难点,首先我们要明白两种创建线程的方法,其次在售票问题中我们要注意线程并发带来的线程安全问题。

    最后我们要明白几个重要的概念:

    ①保证代码原子性:所谓代码原子性是指当a线程在执行某段代码块的时候,别的线程必须等待 ,直到a线程执行完才可以执行这段代码。

    ②对象锁:java中处理线程同步的办法非常简单,只需要在你需要同步的代码块上加上语句:synchronized (object) {需要同步的代码块} ,即可。

    ③获取线程名称的方法:Thread.currentThread().getName()。

    代码如下:

    package com.thread;

    public class ThreadShouPiao {

    /**
    * 功能:线程售票:解决线程并发带来的线程安全问题(保证代码的原子性)
    * 对象锁的概念
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    //创建一个售票窗口对象
    ThreadWindowTicks twk=new ThreadWindowTicks();
    //创建三个线程,同时启用
    Thread th1=new Thread(twk);
    Thread th2=new Thread(twk);
    Thread th3=new Thread(twk);
    th1.start();
    th2.start();
    th3.start();
    }
    }
    //窗口售票类
    class ThreadWindowTicks implements Runnable{

    private int piao_num=2000;

    public void run() {
    // TODO Auto-generated method stub
    while(true){
    //要保证if else语句原子性(同步代码块)
    synchronized (this) {//对象锁
    if(piao_num>0&&piao_num<=2000){
    System.out.println(Thread.currentThread().getName()+"卖第"+piao_num+"张票");
    try {
    Thread.sleep(1000);

    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    piao_num--;
    }
    else {
    break;
    }
    }
    }
    }
    }

  • 相关阅读:
    P1016 旅行家的预算
    导航菜单全部解释调用外部样式
    css调用外部样式和css样式说明剧中显示
    两种调用外部样式的方法
    css行内样式
    css选择器集体声明
    CSS用类选择器在本页写样式
    CSS用Id选择器在本页写样式
    css用标签选择器在本页写样式
    CSS本页写样式
  • 原文地址:https://www.cnblogs.com/zhouguoshuai/p/10129106.html
Copyright © 2011-2022 走看看