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; } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GO------小白之网络编程
对于小白刚接受网络编程时还是有点懵的、一直想整理、但是不知道该怎么整理、就把自己的理解写了下来、不足之处欢迎拍砖 上章的并发聊天室其实是应该在整理完网络编程和goroutine和channel后才发的、但是一直没有时间 网络编程:分为C/S和B/S架构、对于C/S来说对应的其实是TCP,B/S对应的是http、优缺点就不整理了、浪费时间 C/S:其实又叫socket编程 此时我们引入了socket、对于go来说、socket其实内部是两个channel、双向全双工工作、而且通信中的socket一定是成对出现的 流程: 服务器端: 1、创建监听socket:listener:=net.Listen("TCP","IP+port") 2、启动监听:Conn:=listener.Accept() Conn用于通信的socket 3、Conn.Read() 4、处理使用数据 5、Conn.Write() 6、关闭两个socket 两边一边进行写一边读、也可以利用nc来充当客户端 客户端:需要与服务器端进行连接、利用dial函数 对于并发版的服务器我们只要将.accept循环以及有什么操作在循环...
- 下一篇
mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享
原文: mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享 摘要: 下文将分享三种将字段中null值替换为指定值的方法分享,如下所示: 实验环境:sqlserver 2008 R2 create table test(keyId int identity, info varchar(30)) go insert into test(info)values('a'),('b'),(null),('d') go ---方法1:使用isnull替换 select keyId,isnull(info,'替换null值') as info from test go ---方法2:使用case when 替换 select keyId,case when info is null then '替换null值' else info end as info from test ---方法3:使用coalesce替换相应的值 select keyId , coalesce(info,'替换null值') as info from test go truncate tabl...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音