`
luozhonghua2014
  • 浏览: 62446 次
文章分类
社区版块
存档分类
最新评论

并发耗时计算模拟

 
阅读更多
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class FutureTaskDemo {
	public static void main(String[] args) {
		// 初始化一个Callable对象和FutureTask对象
		Callable pAccount = new PrivateAccount();
		FutureTask futureTask = new FutureTask(pAccount);
		
		// 使用futureTask创建一个线程
		Thread pAccountThread = new Thread(futureTask);
		System.out.println("futureTask线程现在开始启动,启动时间为:" + System.nanoTime());
		pAccountThread.start();
		System.out.println("主线程开始执行其他任务");
		// 从其他账户获取总金额
		int totalMoney = new Random().nextInt(100000);
		System.out.println("现在你在其他账户中的总金额为" + totalMoney);
		
		
		System.out.println("等待私有账户总金额统计完毕...");
		// 测试后台的计算线程是否完成,如果未完成则等待
		while (!futureTask.isDone()) {
			try {
				Thread.sleep(500);
				System.out.println("私有账户计算未完成继续等待...");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println("futureTask线程计算完毕,此时时间为" + System.nanoTime());
		Integer privateAccountMoney = null;
		try {
			privateAccountMoney = (Integer) futureTask.get();
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
		System.out.println("您现在的总金额为:" + totalMoney
				+ privateAccountMoney.intValue());
	}
}

@SuppressWarnings("all")
class PrivateAccount implements Callable {
	Integer totalMoney;

	public Object call() throws Exception {
		Thread.sleep(5000);
		totalMoney = new Integer(new Random().nextInt(10000));
		System.out.println("您当前有" + totalMoney + "在您的私有账户中");
		return totalMoney;
	}

}

分享到:
评论

相关推荐

    检测网页并发量

    - 使用专业工具:例如Apache JMeter、LoadRunner等,这些工具可以模拟大量用户并发访问,从而测试网站的响应时间和稳定性。 - 日志分析:通过分析服务器日志,统计在同一时间窗口内处理的请求数量。 - 第三方服务...

    TBB并发容器 学习笔记

    例如,上述代码展示了如何使用`parallel_for`和`blocked_range`来并行处理一个简单的任务,模拟了耗时操作并在双核CPU上实现了近乎两倍的加速。 总的来说,TBB通过提供一系列高级并行算法和线程安全的容器,简化了...

    高并发秒杀案例

    4. **异步处理**:将耗时的操作如订单创建、发送短信验证码等,转化为后台异步任务,快速返回结果给用户,提升用户体验。可以借助消息队列(如RabbitMQ或Kafka)来实现。 5. **负载均衡**:使用Nginx等负载均衡器...

    高性能并发业务.pdf

    而软并发则是基于同一硬件通过时间分片模拟的并发,例如单机上单CPU的多线程或多进程并发。超线程技术介于两者之间,通过技术手段提升单个CPU核心的并发处理能力。 并发的度量涉及到并发业务的性能评估,包括并发的...

    Java Concurrent处理并发需求

    - `doSomething()`方法模拟了一个耗时操作,这里使用了`Thread.sleep()`方法使线程休眠2秒。 4. **关闭线程池**: - 在所有任务提交后,调用`executorService.shutdown()`方法来关闭线程池。这将导致线程池不再...

    商店收银模拟系统, 计算所有顾客结账时间

    - 可以通过模拟每个步骤并累加时间来得出总耗时。 8. **并发处理**: - 如果系统需要同时处理多个收银台,可以考虑使用多线程或并发编程技术来提高效率。 - Java的`Thread`类或`ExecutorService`可以用来实现...

    基于GPU实现汉克尔变换并行计算.pdf

    通过对比汉克尔变换的串行算法和基于GPU的并行算法,文章展示了并行计算在减少计算耗时方面的显著优势,从而实现了更高的计算速度和效率提升。 并行计算可以分为时间上的并行(流水线技术)和空间上的并行(多...

    如何做好性能压测(四)- 并发模式与 RPS 模式之争,性能压测领域的星球大战.docx

    并发模式通常指的是模拟多个用户同时对系统发起请求,以测试系统在并发用户负载下的稳定性和响应速度。这种模式基于实际场景中的并发用户数量来设定测试参数,例如在电商大促时可能会有大量的用户同时访问网站。 ...

    并发、多线程、同步异步概念.docx

    这种情况下,多个任务的执行不再是模拟的,而是真正意义上的并发执行。 **多线程**(Multithreading)则是实现并发的一种具体方式,它允许在一个进程中创建多个线程。每个线程可以被视为进程中的一个轻量级子进程,...

    多线程计算

    - 科学计算:分布式计算、并行计算任务,如气候模拟、分子动力学等。 - 游戏开发:游戏逻辑、渲染、AI等可以分别在不同线程中运行,提高游戏流畅性。 7. 性能优化策略 - 线程池:预先创建一定数量的线程,重复...

    模拟ATM存取.zip

    尽管规模较小,但这个模拟ATM系统涵盖了网络通信和并发处理的重要概念,对于理解和实践这些技术非常有帮助。 在实际的ATM系统中,还会涉及数据库管理、安全认证、事务处理等复杂功能。不过,"模拟ATM存取.zip"作为...

    操作系统模拟:文件管理

    在实际操作中,文件操作可能涉及到I/O操作,这些操作通常耗时较长,如果阻塞主线程,可能导致界面卡顿。因此,可以使用Java的并发库,如ExecutorService和Future,将文件操作异步化,保证用户体验的流畅性。 6. ...

    20.9.24aqs-并发编程笔记.pdf

    - 模拟耗时操作:在生产者/消费者场景中,可能会有耗时的操作,如数据库操作。示例中的Operate类演示了如何通过休眠来模拟耗时操作。 - 测试类:测试类用于演示GuardedObject、Operate等类的使用,创建了线程t1来...

    Java分布式应用学习笔记05多线程下的并发同步器

    // 模拟耗时操作 return "OtherPerson:::经过一番厮杀取得《葵花宝典》"; } } ``` 在这个示例中: - `OtherPerson`类实现了`Callable<String>`接口,定义了一个名为`call()`的方法,该方法模拟了获取《葵花...

    Windows环境下河网水流多线程并行计算研究

    **多线程**:多线程是并行计算的一种实现方式,允许多个线程(轻量级进程)在单个进程中并发执行,共享相同的内存空间。这在提高程序响应性和利用多核处理器方面非常有效。 **共享内存**:共享内存是一种并行编程...

    javascript模拟多线程

    为了解决这个问题,开发者们引入了各种技术来模拟多线程,使JavaScript能够更好地处理异步操作和并发任务。本文将详细介绍JavaScript模拟多线程的概念以及如何使用JavaScript实现类似多线程的效果。 一、JavaScript...

    c#中的线程,任务,并发编程

    在这个例子中,`Thread.Sleep(3000)`模拟了一个耗时的操作,然后在控制台输出用户输入的水果名称。`BeginInvoke`方法被用于启动异步调用,同时`IAsyncResult`对象用于检查操作是否完成。循环中使用`IsCompleted`属性...

    计算机四级数据库工程师模拟试题.docx

    - 早期的DBMS可能只提供编程语言接口,这使得开发新的查询和处理功能较为复杂和耗时。 - **错误选项分析**:“仅提供编程语言,使得新的查询和处理代价高、费事”这一选项表明了早期DBMS的一些局限性。 3. **早期...

    模拟线程 C#

    在“模拟线程 C#”这个主题中,我们将深入探讨如何使用C#来实现线程的模拟,以及如何在并发执行环境中管理这些线程。C#提供了System.Threading命名空间,其中包含了许多用于线程操作的类和接口,如Thread、Mutex、...

    aqs-并发编程笔记.pdf

    - 文档提供了使用Java实现GuardedObject对象的示例,其中GuardedObject类、模拟耗时操作的Operate类和测试类Test分别展示了如何生产和消费结果。 - 在示例中,t1线程模拟数据库操作并设置结果,主线程则等待t1设置...

Global site tag (gtag.js) - Google Analytics