weixin_50049743 2022-11-17 14:18 采纳率: 33.3%
浏览 27
已结题

CompletableFuture.runAsync()线程安全吗?

大概意思是我一个接口里面需要连续调用7次远程同样的接口,只是传给接口的参数不一样,相互之间没有数据交互,使用的是同一个service里面同一个方法,其他不涉及共享变量


CompletableFuture<Void> operate4RenewFuture = CompletableFuture.runAsync(() -> {

                    this.testService.testMethod();
                }, threadPoolExecutor);

线程池定义如下

@Bean
    public ThreadPoolExecutor threadPoolExecutor(){

        return new ThreadPoolExecutor(50, 500,
                30, TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(10000));
    }

如果项目采用分布式部署,高并发情况下,这些异步任务之前会有线程安全性问题吗?

  • 写回答

1条回答 默认 最新

  • 於黾 2022-11-17 14:37
    关注

    在说线程安全不安全之前,我们应该首先明确到底在说什么东西安全还是不安全
    安全不安全说的都是数据
    如果一个操作根本不涉及操作数据,那也就没有安全不安全的问题
    比如一个函数,里面没有使用任何全局变量,全是形参传进来的,那每一个调用函数的地方都独立开辟一块内存,互相没有影响,也就根本不涉及线程安全的问题,你同时开100个线程都执行同一个函数也保证不会互相冲突啊
    你调用函数访问远端接口也是一样,要看你函数里面到底怎么实现的,用了什么全局变量了吗
    如果你发送接收的字节数组用的是全局变量,那肯定冲突啊,互相覆盖呀

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 创建了问题 11月17日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度