欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

开放源代码:轻量级异步协调框架 - 快速入门

最编程 2024-10-15 16:14:09
...

需要的环境:

  • JDK 17
  • Maven 3.x+

快速使用

下面以SpringBoot环境做测试

引入依赖

		<dependency>
			<groupId>org.pxl</groupId>
			<artifactId>async-springboot-starter</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>

添加测试对象

1、实现接口

import org.pxl.core.model.AsyncResult;

/**
 * @author MADAO
 * @create 2024 - 10 - 13 17:35
 */
public interface UserService {

    public AsyncResult<String> queryUser(String id);

    public AsyncResult<String> query(String id);
}

2、接口实现类

import org.pxl.api.annotation.Async;
import org.pxl.core.model.AsyncResult;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * 使用异步框架
 *
 * @author MADAO
 * @create 2024 - 10 - 13 15:37
 */
@Service
public class UserServiceImpl implements UserService{

//异步方法
    @Async
    public AsyncResult<String> queryUser(String id) {
        System.out.println("开始根据用户id 查询用户信息 " + id);
        try {
            // 沉睡模拟处理耗时
            Thread.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        final String result = id + "-result";
        System.out.println("结束根据用户id 查询用户信息 " + result);

        AsyncResult<String> asyncResult = new AsyncResult<>();
        asyncResult.setValue(result);
        return asyncResult;
    }

//非异步方法
    @Override
    public AsyncResult<String> query(String id) {
        System.out.println("开始根据用户id 查询用户信息 " + id);
        try {
            // 沉睡模拟处理耗时
            Thread.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        final String result = id + "-result";
        System.out.println("结束根据用户id 查询用户信息 " + result);

        AsyncResult<String> asyncResult = new AsyncResult<>();
        asyncResult.setValue(result);
        return asyncResult;
    }


}

开始测试

添加测试类:

package com.example.asyncspringboottest;

import com.example.asyncspringboottest.service.UserService;
import org.junit.jupiter.api.Test;
import org.pxl.core.model.AsyncResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class AsyncSpringbootTestApplicationTests {

	@Autowired
	private UserService	userService;


	@Test
	public void test() {
		long start = System.currentTimeMillis();
//		异步测试
//		AsyncResult<String> result = userService.queryUser("123");
//		AsyncResult<String> result2 = userService.queryUser("1234");

		AsyncResult<String> result = userService.query("123");
		AsyncResult<String> result2 = userService.query("1234");
		System.out.println("查询结果" + result.getResult());
		System.out.println("查询结果" + result2.getResult());
		long end = System.currentTimeMillis();
		System.out.println("共计耗时: " + (end-start));
	}

}

非异步测试结果:
在这里插入图片描述

异步测试结果:
在这里插入图片描述

方法实现效率高了一倍