JDK19虚拟线程初探(三)

简介

上两篇文章中,我们已经介绍了使用虚拟线程的例程和VirtualThread。接下来,我们继续介绍虚拟线程的调度,即VirtualThread中最重要的两个成员变量Executor scheduler和Continuation cont。

scheduler

创建

scheduler是用于虚拟线程调度的线程池,先看虚拟线程的初始化代码:

    VirtualThread(Executor scheduler, String name, int characteristics, Runnable task) {
   
   
        super(name, characteristics, /*bound*/ false);
        Objects.requireNonNull(task);

        // 如果入参的scheduler为null,则做默认逻辑
        if (scheduler == null) {
   
   
            Thread parent = Thread.currentThread();
            if (parent instanceof VirtualThread vparent) {
   
   
            	// 如果当前线程是虚拟线程,则使用当前线程的scheduler
                scheduler = vparent.scheduler;
            } else {
   
   
                // 否则使用全局线程池DEFAULT_SCHEDULER
                scheduler = DEFAULT_SCHEDULER;
            }
        }

        this.scheduler = scheduler;
        // 初始化Continuation 
        this.cont = new VThreadContinuation(this, task);
        this.runContinuation = this::runContinuation;
    }

默认调度器DEFAULT_SCHEDULER其实就是个Fo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值