⑴ java 线程池的问题
你的理解没毛病。
核心线程数(corePoolSize):核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。
最大线程数(maxPoolSize):当线程数大于或等于核心线程,且任务队列已满时,线程池会创建新的线程,直到线程数量达到maxPoolSize。如果线程数已等于maxPoolSize,且任务队列已满,则已超出线程池的处理能力,线程池会拒绝处理任务而抛出异常。
线程池按以下行为执行任务
当线程数小于核心线程数时,创建线程。
当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
当线程数大于等于核心线程数,且任务队列已满,1、若线程数小于最大线程数,创建线程;2、若线程数等于最大线程数,抛出异常,拒绝任务
⑵ JAVA线程的题目 求大神解答
这不很简单,把3个线程放入list中,按优先级排好序,再一个一个拿出来,执行就好了。
⑶ java线程安全问题,笔试题帮忙给个思路。
1、两个线程,一个线程执行开门操作,一个线程执行关门操作,并都进行同步处理(synchronized)
2、假如在开门期间,按下按钮,刚开门线程wait, 并notify关门线程开始run, 同理在关门期间,如果
按下按钮,则关门线程wait, 并notify开门线程执行
3、有一个注意的地方,每当在开门或关门期间按下按钮的时候,都要记录开门或关门最后一刻的状态值,以便在下次执行时,开门的从上一次关门最后一刻的状态开始执行,而关门的则上一个开门的最后一刻状态开始执行。个人见解。。。
⑷ Java线程问题
线程只能调用一次start方法,这将使线程进入待运行状态,等待分配CPU时间片。在线程中的run方法执行完毕后,线程进入死亡状态,该线程生命结束。一个线程对象只可以调用一次start方法。试图在线程死亡后再次调用start方法将抛出IllegalThreadStateException异常。