`
m635674608
  • 浏览: 5060955 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

协程 vs 线程 demo

    博客分类:
  • java
 
阅读更多

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();

 

}

 

}

 

分享到:
评论

相关推荐

    协程与微线程demo

    **协程与微线程简介** 协程(Coroutines)和微线程(Microthreads)是计算机程序设计中的两种并发执行机制,它们在处理高并发和低延迟问题时展现出高效性能。协程是一种轻量级的线程,它允许在一个线程内暂停执行并...

    untiy 多线程demo

    "untiy 多线程demo"是一个展示如何在Unity中实现多线程的实例,它包括了封装的协程(Coroutine)和名为Loom.cs的文件,同时提到了AssetStore上的Loom V1.6插件。 1. **Unity的单线程限制**:Unity引擎默认使用单...

    kotlin-coroutine-demo:kotlin协程demo,kotlin协程+ mvvm + okhttp

    真香基础协程(框架)其实就是一套由kotlin官方提供的线程API,一个线程框架协程并非一个轻量级的线程,或者很像一个轻量级的线程现在写完这篇文章之后,我理解:协程(本身)就是一个lambda参数里的逻辑,一段可以...

    amareya java 协程

    Amareya Java 协程库是为了解决传统Java线程模型中的一些痛点而设计的,比如线程创建和销毁的开销大、上下文切换频繁导致的性能损失等问题。下面将详细探讨Amareya Java 协程的核心概念、优势以及如何使用。 首先,...

    一个封装协程和flow的demo

    1. **协程上下文**:定义了协程的执行环境,例如在主线程、后台线程或者IO线程中启动协程。通常,我们会为每个协程选择合适的上下文,以确保在正确的地方执行任务,如UI操作应在主线程,网络请求或数据库操作则在...

    PHP实现简单的协程任务调度demo示例

    协程是一种编程概念,它允许程序在不使用线程或进程上下文切换的情况下实现并发执行。这种机制在处理I/O密集型任务时非常有效,因为它可以避免阻塞,提高程序的执行效率。 首先,我们来看`Task`类,它是协程任务的...

    Swoole2.0原生协程高性能开发实践

    首先,协程是一种用户态的轻量级线程,它的基本原理是通过程序的协作来完成任务的执行,而不是依赖于操作系统的线程调度。在PHP中,Swoole2.0提供了对原生协程的支持,其中yield关键字的使用是实现协程的关键技术。...

    基于Java字节码增强技术实现的协程Demo.zip

    协程是一种轻量级的线程,它在执行过程中可以暂停并恢复,这为异步编程提供了极大的便利。在Java中实现协程通常需要借助字节码增强技术,因为Java原生并不支持协程。 本示例"基于Java字节码增强技术实现的协程Demo...

    c语言协程实现demo 分别使用x86-64汇报和ucontext实现

    在IT领域,协程是一种轻量级的并发执行机制,它允许程序在执行过程中暂停并在稍后恢复,而无需进行昂贵的系统调用或者线程上下文切换。本篇文章将详细探讨C语言中如何实现协程,特别是通过x86_64汇编和ucontext库来...

    tornado协程示例

    `run_sync`函数将阻塞当前线程,直到协程执行完成。该方法自动完成了启动和停止IOLoop的过程。 3. **在IOLoop已经启动时,通过`IOLoop.current().spawn_callback()`函数调用** ```python def func_normal(): ...

    arduino使用多线程的Demo

    标题提到的"arduino使用多线程的Demo",就是关于如何在Arduino平台上实现类似多线程的编程方式。 描述中提到了“ProtoThreads”,这是一个专为资源受限的微控制器设计的轻量级多任务库。ProtoThreads并非传统意义上...

    demo线程协程集合_1_0-190308175346.alp

    Android andlua androlua lua实战工程

    Java项目:在Android中使用Model-View-Intent(MVI)架构模式下对Kotlin协程的性能分析

    Java项目:在Android中使用Model-View-Intent(MVI)架构模式下对Kotlin协程的性能分析 概述:本文通过对Kotlin协程的性能分析,比较了在Android中使用Model-View-Intent(MVI)架构模式下Kotlin协程和RxJava ...

    kotlin协程+okkhttp + retrofit2 网络框架demo——TestDD.zip

    本示例"Kotlin协程+OkHttp+Retrofit2网络框架demo"旨在演示如何整合这三种强大的技术来实现异步网络调用,提高应用性能并简化代码。以下是这些技术的详细介绍: **Kotlin协程** Kotlin协程是一种轻量级的线程管理...

    安卓毕业设计加源码-KotlinCoroutine:Kotlin的协程学习笔记、demo

    协程(Coroutine)提供了一种避免阻塞线程并用更简单、更可控的操作替代线程阻塞的方法:协程挂起 对线程的操作进一步抽象,使原来用“异步+回调”的方式写出来的复杂代码,简化成看似同步的方式。这样我们就可以按...

    coroutines.rar

    【标题】:Kotlin协程在携程Demo中的应用解析 【描述】:本文将深入探讨在携程Demo项目中如何利用Kotlin的协程(Coroutines)技术,提高应用程序的性能和响应性。Kotlin Coroutines是一种轻量级的并发机制,它解决...

    Android-协程kotlinretrofitmvvm的模式

    在Kotlin中,我们可以使用Kotlin的协程来异步加载网络数据,避免阻塞UI线程。 2. 使用Retrofit:定义一个接口,该接口包含需要的HTTP请求方法,如GET、POST等,并使用注解指定URL和参数。Retrofit会自动生成实现这...

    Kotlin的Android实战Demo.rar

    协程是Kotlin为解决异步编程问题引入的概念,它们是轻量级的线程,可以暂停和恢复执行,有效避免了回调地狱,提高了代码的可读性和可维护性。 - **挂起函数**:协程的核心是挂起函数,它能在不阻塞线程的情况下暂停...

    QQdemo android

    现代Android开发推荐使用ExecutorService和协程(Kotlin语言特性)来更高效地管理并发任务。 7. **权限管理**:由于Android的权限模型,QQDemo可能需要请求如INTERNET、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_...

Global site tag (gtag.js) - Google Analytics