子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次-004

子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
public class Sub10Main100Loop50Thread {

	public static void main(String[] args) throws InterruptedException {

		Business business = new Business();
		new Thread(new Runnable(){
			@Override
			public void run() {
				for(int i=0;i<5;i++){
					business.sub(i);
				}
			}
		}){}.start();
		Thread.sleep(1000);//目的是让子线程先跑

		for(int i=0;i<50;i++){
			business.main(i);
		}
	}
}

class Business{
	public synchronized void sub(int i){
		for(int j=0;j<10;j++){
			System.out.println(Thread.currentThread().getName()+ "  "+j);
		}
		this.notify();
		try {
			this.wait();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public synchronized void main(int i){

		for(int j=0;j<100;j++){
			System.out.println(Thread.currentThread().getName()+ "  "+j);
		}

		this.notify();
		try {
			this.wait();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

参考:http://blog.csdn.net/xiaoyu714543065/article/details/8257394
时间: 2024-12-08 00:12:29

子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次-004的相关文章

子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次, 接着再回到主线程又循环 100,如此循环 50 次

子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次, 接着再回到主线程又循环 100,如此循环 50 次 1 package TestThread; 2 3 /** 4 * 子线程循环 10 次, 接着主线程循环 100, 接着又回到子线程循环 10 次, 接着再回到主线程又循环 100, 如此循环 50 次 5 * 6 * @author trfizeng 7 * 8 */ 9 public class ThreadTest { 10 static int round

python37 1.GIL--全局解释器锁 2.GIL带来的问题 3.为什么需要GIL 4.GIL的加锁解锁时机 5.关于GIL的性能的讨论 6.线程常用方法 7.GIL锁与自定义锁的区别 8.进程池与线程池 9.同步异步 10.异步调用

复习1.JoinableQueue--可以被join的队列2.多线程3线程的使用方法与进程一模一样3.1守护线程3.2线程安全问题3.3解决方案3.3.1互斥锁mutex3.3.2递归锁Rlock3.3.3信号量semaphore3.3.4死锁问题 详解:1.JoinableQueue--可以被join的队列 1.1join是等待任务结束 队列怎么叫结束 调用task_done一次则表示有一个数据被处理完成了,当task_done次数等于put的次数就意味着任务处理完成了 1.2这就是join的

要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t

需求:两个异步任务都完成后, 回到主线程 /** 1.下载图片1和图片2 2.将图片1和图片2合并成一张图片后显示到imageView上 思考: * 下载图片 : 子线程 * 等2张图片都下载完毕后, 才回到主线程 */ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 创建一个组 dispatch_group_t group = dispatch_group_create(); // 开启一个任务下载图片

经典C语言程序设计100例 -- C 和 Python 版 (06 - 10)

[06]格式化输出 题目:用*号输出字母C的图案. 思路:可先用'*'号在纸上写出字母C,再分行输出.如果输出图形较大,且有规律可循,可考虑使用循环. C 语言代码 int main() { const char *p = " **** \n" " ** ** \n" "** \n" "** \n" "** \n" " ** ** \n" " **** \n"; pr

第100次提醒:++ 不是线程安全的

目录 写在前面 一道简单线程安全题,不知道有多少人答不上来 实验:并发的自增运算 ++ 运算的原理 Java 的原子操作类 写在最后 疯狂创客圈 Java 死磕系列 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -17[ 博客园 总入口 ] 源码IDEA工程获取链接:Java 聊天室 实战 源码 写在前面 ? 大家好,我是作者尼恩. 目前正在组织 疯狂创客圈的几个兄弟,从0开始进行高并发的100级流量(不是用户)聊天器的实战. 在设计客户端之前,发现一个非常重要的基础知识点,没有讲

【“10”力全开 游戏“Ti”厉害】ZX53VE-新飞行堡垒笔记本(Windows 10 Home/新七代标压i7-7700HQ/GTX 1050Ti 4G/8G内存/1TB+128GB)

[“10”力全开 游戏“Ti”厉害]ZX53VE-新飞行堡垒笔记本(Windows 10 Home/新七代标压i7-7700HQ/GTX 1050Ti 4G/8G内存/1TB+128GB) http://store.asus.com.cn/product-1416.html 销售价:                      (节省¥700.00) 市场价:         ¥7899.00 商品评分:         /////.....                      (共36人评

java-线程-使用阻塞队列(BlockingQueue)控制线程通信

BlockingQueue是一个接口,也是Queue的子接口.BlockingQueue具有一个特征:当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则线程被阻塞:但消费者线程试图从BlockingQueue中取出元素时,如果队列已空,则该线程阻塞. 程序的两个线程通过交替向BlockingQueue中放入元素.取出元素,即可很好地控制线程的通信. BlockingQueue提供如下两个支持阻塞的方法: put(E e):尝试把Eu元素放如BlockingQueue中,

100亿个数字找出最大的10个

1.首先一点,对于海量数据处理,思路基本上是确定的,必须分块处理,然后再合并起来. 2.对于每一块必须找出10个最大的数,因为第一块中10个最大数中的最小的,可能比第二块中10最大数中的最大的还要大. 3.分块处理,再合并.也就是Google MapReduce 的基本思想.Google有很多的服务器,每个服务器又有很多的CPU,因此,100亿个数分成100块,每个服务器处理一块,1亿个数分成100块,每个CPU处理一块.然后再从下往上合并.注意:分块的时候,要保证块与块之间独立,没有依赖关系,

如何让UITableView加载完成后更新UI回到主线程

tableView加载完毕后回调的delegate方法: -(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){