`

多线程情况下利用障碍器计算程序总的执行时间

    博客分类:
  • Java
阅读更多

直接上代码:

 

package com.kevin.thread;

import java.util.concurrent.CyclicBarrier;

public class ThreadTime {
	
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();
		CyclicBarrier cb = new CyclicBarrier(2, new TimeCalculator(startTime));
		SubThread thread1 = new SubThread("Thread 1", cb);
		thread1.start();
		SubThread thread2 = new SubThread("Thread 2", cb);
		thread2.start();
	}
}

class TimeCalculator extends Thread {
	private long startTime;
	
	public TimeCalculator(long startTime) {
		this.startTime = startTime;
	}
	
	public void run() {
		long endTime = System.currentTimeMillis();
		System.out.println("Total time cost: " + (endTime - startTime)/1000 + " s.");
	}
}

class SubThread extends Thread {
	private String name;
	private CyclicBarrier cb;
	
	public SubThread(String name, CyclicBarrier cb) {
		super(name);
		this.name = name;
		this.cb = cb;
	}

	public void run() {
		System.out.println(name + " is starting...");
		try {
			Thread.sleep(5000);
			System.out.println(name + " is stoping...");
			cb.await();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}
 

 

 

分享到:
评论

相关推荐

    Java-多线程教学文档

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,从而提高了CPU资源的利用率。本文档详细介绍了Java多线程的相关知识,包括概念、原理、创建、同步、调度以及新特性。 首先,理解多线程的...

    JAVA(坦克大战,多线程管理).rar

    "JAVA(坦克大战,多线程管理).rar"这个压缩包可能包含了一个基于Java实现的坦克大战游戏,其中涉及了多线程的概念来模拟游戏中的各种动态元素,如坦克、子弹、障碍物等的独立运动和交互。下面我们将深入探讨Java多...

    相互速度障碍物_rvo_RVO速度障碍物的计算程序_c#路径障碍物_机器人_路径规划_源码.zip

    在给定的压缩包文件"相互速度障碍物_rvo_RVO速度障碍物的计算程序_c#路径障碍物_机器人_路径规划_源码.zip"中,我们可以深入探讨几个关键的IT知识点,主要涉及机器人路径规划、速度障碍物计算以及C#编程语言的应用。...

    java多线程编程总结

    - **守护线程**(Daemon Thread):在没有用户线程运行的情况下,JVM会自动退出。 #### 五、Java多线程的同步机制 ##### 1. 同步方法 - 使用`synchronized`关键字修饰的方法称为同步方法,确保同一时刻只有一个...

    用java多线程写的贪吃蛇

    这个程序利用了Java的多线程技术来管理游戏的各个组件,如蛇、食物以及游戏窗口的更新。让我们深入探讨一下其中涉及的关键知识点。 1. **Java多线程**:多线程是Java的重要特性之一,它允许程序同时执行多个任务。...

    E4A无障碍类库,内含清明跨程序辅助类库、及例程源码

    E4A无障碍类库和清明跨程序辅助类库的结合,为开发者提供了一个强大的工具集,以创建具有无障碍功能的应用程序。这些工具和源代码资源对于提升移动应用的包容性和用户体验具有重要意义。通过深入理解和利用这些类库...

    基于Java多线程的弹球游戏程序.zip

    在本项目中,“基于Java多线程的弹球游戏程序”是一个典型的计算机编程示例,它利用了Java语言的多线程特性来实现一个交互式的弹球游戏。在这个游戏中,可能包括了球的运动、碰撞检测、用户输入响应等多个并发执行的...

    银行排队叫号系统(完整版)

    多线程使得程序能够同时处理多个任务,比如,一个线程负责生成新的号码,另一个线程负责显示当前叫到的号码,还有可能有其他线程处理如客户等待时间计算、优先级处理等功能。通过这种方式,系统能够模拟现实中银行...

    弹球游戏(java程序)

    【标题】:“弹球游戏(Java程序)”是一款基于Java编程语言开发的桌面游戏,它利用了Swing库和多线程技术来实现动态的弹球运动效果。 【描述】:该程序是在Eclipse集成开发环境中创建的,利用了SwingDesigner工具...

    Programming with POSIX Threads 英文版+ 中文版+源码

    本书旨在帮助程序员理解和利用Pthreads API来构建高效、可靠的多线程应用程序。POSIX线程是跨平台的标准,被广泛应用于Unix、Linux以及一些其他操作系统中。 在多线程编程中,Pthreads提供了丰富的接口,包括线程的...

    C++AGV 路径规划与运行仿真程序

    4. **多线程处理**:对于大规模的地图数据处理,可以考虑使用多线程技术来加速计算过程,提高程序性能。 综上所述,该程序提供了一个基础框架,用于实现AGV在特定环境下的路径规划与运行仿真。通过对上述知识点的...

    Fritz Chess Benchmark4.3.2完全汉化版

    这款软件的最新汉化版由国内爱好者“坑爹的小A”精心翻译,为中文用户提供了更为友好的界面和使用体验,特别是对多线程的支持,使其在多核处理器环境下展现出强大的计算能力。 1. **Fritz Chess Benchmark的核心...

    南开大学2021年9月《并行程序设计》作业考核试题及答案参考5.pdf

    17. 对矩阵每行排序的程序进行多线程并行化,对矩阵采用动态划分才能实现负载均衡。矩阵每行排序是一种计算密集型操作,可以用多线程并行化来提高性能,但是需要动态地将矩阵划分成小块,以便于线程之间的负载均衡。...

    21春南开大学《并行程序设计》在线作业参考答案.docx

    25. **OpenMP指令**:`omp master`指令用于指定多线程中只有主线程执行的代码块。 26. **pthread_join的作用**:pthread_join用于等待指定线程结束并返回其退出状态。 27. **静态线程编程的缺点**:静态线程编程...

    Windows 程序设计Windows程序设计

    7. **Windows服务**:创建和管理后台运行的服务,以便程序能在用户无感知的情况下执行。 8. **最新技术**:可能涵盖了Windows的新特性和开发工具,如Windows Store应用、UWP(通用Windows平台)以及Visual Studio的...

    java导航程序

    Java的多线程能力可以用于并发处理,提高程序响应速度。例如,地图加载、路径规划和导航指令的更新可以在不同线程中独立执行,以提高整体效率。 综上所述,这个Java导航程序集成了Java编程、GIS技术、路径规划算法...

    Python技术使用优化方案与实际案例探讨.docx

    - **全局解释器锁(GIL)**:GIL的存在使得多线程在Python中无法实现真正的并行执行,这对多核处理器的充分利用构成了障碍。 #### 优化方案 为了解决上述问题,可以采取以下几种优化策略: 1. **算法优化** - ...

    vc开发TTS程序示例程序源代码

    TTS是一种计算机技术,它允许计算机将文本数据转化为可听见的语音输出,这对于视力障碍者、学习语言者以及在不便阅读的情况下(如驾驶或做家务时)获取信息的人来说非常有用。在Windows操作系统中,微软提供了SAPI...

    坦克大战 小游戏

    【坦克大战小游戏】是一款利用Java编程语言开发的娱乐项目,它综合运用了多线程技术和Java的基础知识,为玩家提供了一种互动体验。在这款游戏中,玩家可以通过控制坦克进行战斗,与敌人进行策略对抗,享受游戏带来的...

    一个基于html5的摇号抽奖程序.zip

    通过合理利用HTML5的多媒体、图形绘制、存储和多线程等功能,开发者可以创建出既美观又高效的在线抽奖系统。MoeRander-master这个文件可能是该项目的源代码仓库,包含了实现上述功能的具体代码。

Global site tag (gtag.js) - Google Analytics