Java 多线程 之 interrupt中断 线程实例

简介:

http://www.verejava.com/?id=16992936743871

package com.interrupt;

/**
 题目: 人们在火车站的售票窗口排队买火车票
    1. 北京西站开门
    2. 打开售票窗口
    3. 北京西站有10张去长沙的票
    4. 打开2个售票窗口, 
    5 假设每个售票窗口每隔1秒钟买完一张票
    
    1. 根据 名词  找类
    人们(Person), 火车站(Station),火车票(Ticket) , 售票窗口e 是火车站的线程
    
    
 */
import java.util.*;

public class TestTrain {
    
    public static void main(String[] args) {
        //火车西站开门
        Station station = new Station("火车西站");

        //开窗口
        //Thread win1=station.openWindow("普通窗口");
        Thread win2 = station.openWindow("学生窗口");

        //窗口1 开始售票
        //设置线程优先级 setPriority()
        //win2.setPriority(Thread.MAX_PRIORITY);
        //win1.start();
        win2.start();
        try {
            Thread.sleep(2000);//2 妙的时候  线程停止 stop()
            win2.interrupt(); //打断线程
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Station implements Runnable {
    
    private String name;//火车站的名称
    private String[] persons = { "赵海洋", "王锐", "宋沙", "李欣伟", "徐文晓", "孟令强", "王大卫", "李宝琴", "王浩" };// 火车站排队 买票的人
    private int i = -1;

    public Station(String name) {
        super();
        this.name = name;

    }

    //打开售票窗口  学生窗口,普通窗口,军人窗口  
    //售票窗口 是线程 Thread
    public Thread openWindow(String name) {
        return new Thread(this, name);
    }

    //火车站售票
    public void sale() {
        try {
            while (i < persons.length - 1) {
                i++;
                String person = persons[i];

                System.out.println(person + " " + Thread.currentThread().getName() + "  买了一张北京到上海的火车票");

                Thread.sleep(2000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void run() {
        //开始售票
        sale();

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

http://www.verejava.com/?id=16992936743871

目录
相关文章
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
236 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
250 1
|
4月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
4月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
206 0
Java 数据库 Spring
209 0
|
4月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
379 16
|
5月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
5月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
6月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
392 83
|
6月前
|
安全 Java 测试技术
Java 大学期末实操项目在线图书管理系统开发实例及关键技术解析实操项目
本项目基于Spring Boot 3.0与Java 17,实现在线图书管理系统,涵盖CRUD操作、RESTful API、安全认证及单元测试,助力学生掌握现代Java开发核心技能。
359 0

热门文章

最新文章