一个无限等待的线程,类似于线程池中的核心线程

中断线程的方法

public void run() {

    //只要没有关闭,则一直不结束该线程

    while (!isShutDown) {

        isIdle = false;

        if (null != target) {

            //执行任务,注意这里调用的是run(),而不是start()

            target.run();

        }

        //任务结束,闲置状态

        isIdle = true;

        try {

            threadPool.repool(JThread.this);

            synchronized (this) {

                //线程空闲,等待新的任务到来

                wait();

            }

        } catch (InterruptedException e) {

        }

        isIdle = false;

    }

}

public synchronized void setTarget(Runnable target) {

    this.isShutDown = false;

    this.target = target;

    //设置任务之后,通知run方法,开始执行任务

    notifyAll();

}

/**

 * 关闭线程

 */

public synchronized void shutDown() {

    this.isShutDown = true;

   notifyAll();

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,797评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,174评论 18 399
  • 1.解决信号量丢失和假唤醒 public class MyWaitNotify3{ MonitorObject m...
    Q罗阅读 4,444评论 0 1
  • 别人说心情也能失恋也是醉了… 觉得自己越来越奇怪,性格很是孤僻,不自信,不愿意去跟别人接触因为总是不知道说什么而更...
    你好女孩阅读 1,670评论 0 1
  • 这一天听她和自己分享心事,她把聊天记录给我看并问我“你觉得他到底喜不喜欢我”我说你感觉不到吗,她竟说我不知道,我...
    LliranR阅读 2,540评论 0 0