package my;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ActorVsThead {
static int poolSize = 1;
// 一共执行的次数
static int runSize = 100;
/*
* runSize = actorPoolSize * actorRunSize
*/
static int actorSize = 1;// 两个消息处理者
static int actorRunSize = 100;// 一个消息处理者处理的消息数
static int sleepTime = 50;
/**
* 计算密集行
* @return
*/
public static int jisuan(){
int j=0;
for(int i=0;i<10000000;i++){
j+=i;
}
return j;
}
public static void main(String[] args) throws Exception {
for (int i = 0; i < 5; i++) {
testActor();
}
System.out.println("==========");
for (int i = 0; i < 5; i++) {
theadTest();
}
//
}
public static void testActor() throws Exception {
ExecutorService executorService = Executors
.newFixedThreadPool(poolSize);
final CountDownLatch end = new CountDownLatch(actorSize);
long s = System.currentTimeMillis();
for (int i = 0; i < actorSize; i++) {
executorService.submit(new Runnable() {
public void run() {
for (int i = 0; i < actorRunSize; i++) {
jisuan();
}
end.countDown();
}
});
}
end.await();
System.out.println((System.currentTimeMillis()) - s);
executorService.shutdown();
}
public static void theadTest() throws Exception {
ExecutorService executorService = Executors
.newFixedThreadPool(poolSize);
final CountDownLatch end = new CountDownLatch(runSize);
long s = System.currentTimeMillis();
for (int i = 0; i < runSize; i++) {
executorService.submit(new Runnable() {
@Override
public void run() {
jisuan();
end.countDown();
}
});
}
end.await();
System.out.println((System.currentTimeMillis()) - s);
executorService.shutdown();
}
}
相关推荐
**协程与微线程简介** 协程(Coroutines)和微线程(Microthreads)是计算机程序设计中的两种并发执行机制,它们在处理高并发和低延迟问题时展现出高效性能。协程是一种轻量级的线程,它允许在一个线程内暂停执行并...
"untiy 多线程demo"是一个展示如何在Unity中实现多线程的实例,它包括了封装的协程(Coroutine)和名为Loom.cs的文件,同时提到了AssetStore上的Loom V1.6插件。 1. **Unity的单线程限制**:Unity引擎默认使用单...
真香基础协程(框架)其实就是一套由kotlin官方提供的线程API,一个线程框架协程并非一个轻量级的线程,或者很像一个轻量级的线程现在写完这篇文章之后,我理解:协程(本身)就是一个lambda参数里的逻辑,一段可以...
Amareya Java 协程库是为了解决传统Java线程模型中的一些痛点而设计的,比如线程创建和销毁的开销大、上下文切换频繁导致的性能损失等问题。下面将详细探讨Amareya Java 协程的核心概念、优势以及如何使用。 首先,...
1. **协程上下文**:定义了协程的执行环境,例如在主线程、后台线程或者IO线程中启动协程。通常,我们会为每个协程选择合适的上下文,以确保在正确的地方执行任务,如UI操作应在主线程,网络请求或数据库操作则在...
协程是一种编程概念,它允许程序在不使用线程或进程上下文切换的情况下实现并发执行。这种机制在处理I/O密集型任务时非常有效,因为它可以避免阻塞,提高程序的执行效率。 首先,我们来看`Task`类,它是协程任务的...
首先,协程是一种用户态的轻量级线程,它的基本原理是通过程序的协作来完成任务的执行,而不是依赖于操作系统的线程调度。在PHP中,Swoole2.0提供了对原生协程的支持,其中yield关键字的使用是实现协程的关键技术。...
协程是一种轻量级的线程,它在执行过程中可以暂停并恢复,这为异步编程提供了极大的便利。在Java中实现协程通常需要借助字节码增强技术,因为Java原生并不支持协程。 本示例"基于Java字节码增强技术实现的协程Demo...
在IT领域,协程是一种轻量级的并发执行机制,它允许程序在执行过程中暂停并在稍后恢复,而无需进行昂贵的系统调用或者线程上下文切换。本篇文章将详细探讨C语言中如何实现协程,特别是通过x86_64汇编和ucontext库来...
`run_sync`函数将阻塞当前线程,直到协程执行完成。该方法自动完成了启动和停止IOLoop的过程。 3. **在IOLoop已经启动时,通过`IOLoop.current().spawn_callback()`函数调用** ```python def func_normal(): ...
标题提到的"arduino使用多线程的Demo",就是关于如何在Arduino平台上实现类似多线程的编程方式。 描述中提到了“ProtoThreads”,这是一个专为资源受限的微控制器设计的轻量级多任务库。ProtoThreads并非传统意义上...
Android andlua androlua lua实战工程
Java项目:在Android中使用Model-View-Intent(MVI)架构模式下对Kotlin协程的性能分析 概述:本文通过对Kotlin协程的性能分析,比较了在Android中使用Model-View-Intent(MVI)架构模式下Kotlin协程和RxJava ...
本示例"Kotlin协程+OkHttp+Retrofit2网络框架demo"旨在演示如何整合这三种强大的技术来实现异步网络调用,提高应用性能并简化代码。以下是这些技术的详细介绍: **Kotlin协程** Kotlin协程是一种轻量级的线程管理...
协程(Coroutine)提供了一种避免阻塞线程并用更简单、更可控的操作替代线程阻塞的方法:协程挂起 对线程的操作进一步抽象,使原来用“异步+回调”的方式写出来的复杂代码,简化成看似同步的方式。这样我们就可以按...
【标题】:Kotlin协程在携程Demo中的应用解析 【描述】:本文将深入探讨在携程Demo项目中如何利用Kotlin的协程(Coroutines)技术,提高应用程序的性能和响应性。Kotlin Coroutines是一种轻量级的并发机制,它解决...
在Kotlin中,我们可以使用Kotlin的协程来异步加载网络数据,避免阻塞UI线程。 2. 使用Retrofit:定义一个接口,该接口包含需要的HTTP请求方法,如GET、POST等,并使用注解指定URL和参数。Retrofit会自动生成实现这...
协程是Kotlin为解决异步编程问题引入的概念,它们是轻量级的线程,可以暂停和恢复执行,有效避免了回调地狱,提高了代码的可读性和可维护性。 - **挂起函数**:协程的核心是挂起函数,它能在不阻塞线程的情况下暂停...
现代Android开发推荐使用ExecutorService和协程(Kotlin语言特性)来更高效地管理并发任务。 7. **权限管理**:由于Android的权限模型,QQDemo可能需要请求如INTERNET、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_...