java - 线程1打印1-10,当线程打印到5后,线程2打印“hello”,然后线程1继续打印...
public class T {private static int a =1;//1代表线程1 2线程2public static void main(String[] args) {final T t = new T();new Thread(new Runnable() {@Overridepublic void run() {synchronized (t) {for(int i=1;i<=10;i++){if(i==6){try {a=2;//切换线程2t.wait();//线程1等待,并释放了对象的锁} catch (Exception e) {e.printStackTrace();}}System.out.println(Thread.currentThread().getName()+":"+i);} }}}).start();;new Thread(new Runnable(){@Overridepublic void run() {synchronized (t) {if(a!=2){//没有轮到,进入等待try {t.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("hello");t.notifyAll();}}}).start();} }
结果如下:
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-0:5
Thread-1:hello
Thread-0:6
Thread-0:7
Thread-0:8
Thread-0:9
Thread-0:10
转载于:https://www.cnblogs.com/GotoJava/p/6743043.html
java - 线程1打印1-10,当线程打印到5后,线程2打印“hello”,然后线程1继续打印...相关推荐
- Java学习笔记18:Java_Map集合_HashMap集合_可变参数_Stream流_多线程_线程同步_生产者消费者
文章目录 1.Map集合 1.1Map集合概述和特点[理解] 1.2Map集合的基本功能[应用] 1.3Map集合的获取功能[应用] 1.4Map集合的遍历(方式1)[应用] 1.5Map集合的遍历( ...
- 一道面试题:三个线程循环有序输出10次ABCABC...
面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...
- 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称
文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...
- 写给小白看的线程池,还有10道面试题
如何搞定20k的面试小抄 为什么要用线程池呢? 下面是一段创建线程并运行的代码: for (int i = 0; i < 100; i++) {new Thread(() -> {Syst ...
- java控制一次传10条数据_java 定时同步数据的任务优化
前言 定时任务在系统中并不少见,主要目的是用于需要定时处理数据或者执行某个操作的情况下,如定时关闭订单,或者定时备份.而常见的定时任务分为2种,第一种:固定时间执行,如:每分钟执行一次,每天执行一次. ...
- c++ 多个线程操作socket要同步吗_基础知识深化:NIO优化原理和Tomcat线程模型
1.I/O阻塞 书上说BIO.NIO等都属于I/O模型,但是I/O模型这个范围有点含糊,我为此走了不少弯路.我们日常开发过程中涉及到NIO模型应用,如Tomcat.Netty中等线程模型,可以直接将其 ...
- 为什么线程池里的方法会执行两次_新手一看就懂的线程池
作者:码农田小齐 来源:https://www.cnblogs.com/nycsde/p/14003888.html 那相信大家也能感受到,其实用多线程是很麻烦的,包括线程的创建.销毁和调度等等,而且 ...
- 被裁员之后的Java面经分享,10年经验,已投简历 130+
大家好,我是十一 今天给小伙们分享一位 10 年工作经验的老哥被裁员之后面试高级 Java 开发工程师的求职经历! 内容比较长,干货很多.有帮助的话,欢迎点赞分享! 概述 最近换工作,对最近面试的过程 ...
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
要想解决"脏数据"的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下: public synchronized void run() { ...
- 什么是线程?与进程又有什么区别,为什么要使用它,等对线程进行详细介绍
一.什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 进程: 划分空间,加载资源,静态的,资源单位 线程: 执行代码,执行能力,动态的,执行单位 进程只是用来把资源集中到 ...
最新文章
- 这可能是把策略模式讲的最通俗易懂得文章了!
- eBPF学习——抓取内核网络中的socket信息
- python安装mysql数据库教程,Python配置mysql的教程(必看)
- svn异地同步 linux,svn库两地开发之代码数据的同步包括***连接的全套解决方案
- android+usb摄像头预览分辨率,UVCCamera(usb camera)适配Android9
- 一文详解 React 组件类型
- Dropbox被墙了,幸亏还有类似服务SugarSync
- scala---中的一些string方法
- 智慧城管统计考评详解
- linux mint字体缺失,WPS for Linux【Debian、Ubuntu、Deepin、Linux Mint】字体缺失解决【批量字体安装】...
- 如何将一个vector内容赋值给另一个vector C/C++
- 3D CV 论文调研
- 智能修改文案-智能写作平台
- 留存/复购cohort
- vCenter Server CA证书下载
- vs单步调试及断点调试基本介绍
- 休眠(Hibernate)和睡眠(Sleep)的区别
- Linux(CentOS7)中利用一个光盘制作yum源(配置yum源)
- IdentityServer Checking for expected scope openid failed
- 聊聊rel=external nofollow和rel=noopener noreferrer