这天,
线程池工厂从execute入口进来了一个Runnable任务。
我被创建出来了。(要么线程数没到核心线程数,要么阻塞队列满了)
这个Runnable任务作为我的firstTask,我执行了它。
随后我便进入了日复一日的工作模式:
我不再从execute入口领任务,而是在一个有人工服务的任务窗口(阻塞队列)里领任务,如果领到任务就执行它,执行完后再来窗口领任务。如果窗口里没有任务可以领了,大家(其他线程)就会在这里等着。
但老板不允许我们都无限等待,说养不起这么多闲人。所以当我们的数量超过了工厂设置的核心线程数指标后,在获取任务时,只能等待一个由工厂设置的空闲时间值。(如果工厂开启了allowCoreThreadTimeOut模式,任何人都只能限时等待的获取任务!)
如果等待的时间到了,我还没有获取到任务,那我就会被工厂无情的fire掉。最后,这个社会(JVM)的GC工人,会把我标记为garbage,然后销毁掉。呜呜,我好惨!!!
网友评论