启动三个线程,线程1打印1-5,线程2打印6-10,线程3打印11-15,接着线程1打印16-20……依此类推,打印到72.
public class MyTest {
public static void main(String[] args) {
//创建任务对象
MyTask myTask = new MyTask();
for(int i=1;i<=3;i++){
new Thread(myTask,i+"").start();
}
}
}
public class MyTask implements Runnable{
//线程标记
int state =1;
//要打印的自增数字标志1-75
int number=1;
@Override
public void run() {
//经推算,每个线程需要运行五轮
for(int i=0;i<5;i++){
print(Thread.currentThread().getName());
}
}
public synchronized void print(String name){//参数为线程名(1、2、3)
int num=Integer.parseInt(name);
while(num!=state){
try {
this.wait();//this代表进入本方法的线程对象
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//进入本方法的每个线程都要连续打印5个数字
for(int i=0;i<5;i++){
System.out.println("线程"+num+":"+number++);
}
//此线程打印完5个连续数字,然后运算标记使下一个线程进入
state=state%3+1;
//唤醒本线程以外的其他线程
this.notifyAll();
}
}
启动三个线程,线程1打印1-5,线程2打印6-10,线程3打印11-15,接着线程1打印16-20……依此类推,打印到72.相关推荐
- 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称
文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...
- 线程停止继续_晓龙吊打面试官系列: 如何优雅的停止一个线程
一.什么时候我们需要中断一个线程 在实际的开发中,有很多场景需要我们中断一个正在运行的线程,就比如: 当我们使用抢票软件时,其中某一个通道已经抢到了火车票,这个时候我们就需要通知其他线程停止工作. 当 ...
- 11.python之线程,协程,进程,
一,进程与线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行 ...
- 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类...
俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力. 本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程相关类,本篇 ...
- 线程间怎么交换数据_2 万字长文详解 10 大多线程面试题|原力计划
作者 | ZZZhonngger 责编 | 伍杏玲 出品 | CSDN博客 Volatile相关 1.请谈谈你对 volatile 的理解 答:volatile 是 Java 虚拟机提供的轻量级的同步 ...
- pyqt stop停止线程_面试阿里,字节跳动,腾讯90%都会被问到如何终止线程?有几种方式?你都知道吗?...
在 Java 中有以下 3 种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程终止: 使用 stop() 方法强行终止线程,但是不推荐使用这个方法,因为 ...
- 01编写10个线程,第一个线程从1加到10,第二个线程从11加20…第十个线程从91加到100,最后再把10个线程结果相加。
01编写10个线程,第一个线程从1加到10,第二个线程从11加20-第十个线程从91加到100,最后再把10个线程结果相加(递归算法). 要求很明了:就是要求10个线程,每个线程执行加操作,然后顺序执 ...
- 15、线程同步方式有哪些?优缺点?
进程中线程同步的四种常用方式: 一. 临界区(CCriticalSection) 当多个线程访问一个独占性共享资源时,可以使用临界区对象.拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想 ...
- 11.定时任务定时线程池详解
3.1 新增定时任务池 11.定时任务&定时线程池详解 当我们不用任务框架时,我们想自己写一个定时任务时,我们能想起那个工具类呢?Timer ?还有吗?不知道了,下面我们要讲下Schedu ...
最新文章
- 路由器交换机命令总结
- TensorFlow2-神经网络训练
- [禅悟人生]尊严非席, 不可卷起
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- 循环卷积和周期卷积的关系_基于单口RAM读写的卷积电路(下)
- vs xaml 语句完成 自动列出成员_数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试...
- C++语言基础 —— C++语言入门
- Struts2 整合jQuery实现Ajax功能
- Redis常用数据类型和事物以及并发
- vue 文件目录结构详解
- 文档服务器备份吗,本地资料和云服务器备份吗
- 代理模式(静态代理、动态代理)
- gdiplus 水印_GDIPlus合成半透明图片批量添加图片水印
- 视频教程-Mikrotik RouterOS 软路由基础教程-网络技术
- uc android 4.2,uc网盘下载10.4.2 安卓版-uc网盘手机版西西软件下载
- 杭电多校(MINIEYE)第四场 补题
- 华中农业大学和南京农业大学计算机,科学网—2015年国内几所农业大学的国家基金排名及评述 - 朱猛进的博文...
- V神北京演讲全文:Casper与分片技术的最新进展
- IOS 图片拉伸不变形
- 芯片的制造过程与三大主设备