亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在Spring 中配置了Quartz多線程執行沒問題,但是不能設置成單線程的執行:

我在Spring 中配置了Quartz多線程執行沒問題,但是不能設置成單線程的執行:

米脂 2022-10-07 19:15:37
<bean id="schedulerTrigger"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="taskExecutor" ref="executor" /></bean><bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">             <property name="corePoolSize" value="1" />              <property name="maxPoolSize" value="1" />              <property name="queueCapacity" value="500" />     </bean>        任務設置后,只執行了一次,在也不執行了,而且三個任務,也只執行了第一個
查看完整描述

4 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

quartz本身是多線程的,你這里修改了線程池不知道有沒有效果

對于你想控制不能并發執行的任務可以自行控制并發

class Job{
private static Object lock = new Object();


public void execute(){
synchronized(lock){

//do something

}

}

查看完整回答
反對 回復 2022-10-12
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

你沒有配置Timer 就是執行的時間粒度,比如每分鐘執行一次,沒小時執行一次。
給你個例子:
<!-- 要調用的工作類 -->
        <bean id="quartzWork" class="com.hcy.quartz.QuartzWork"></bean>
        <!-- 定義調用對象和調用對象的方法 -->
        <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <!-- 調用的類 -->
            <property name="targetObject">
                <ref bean="quartzWork"/>
            </property>
            <!-- 調用類中的方法 -->
            <property name="targetMethod">
                <value>work</value>
            </property>
        </bean>
        <!-- 定義觸發時間 -->
        <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="jobDetail">
                <ref bean="jobtask"/>
            </property>
            <!-- cron表達式 -->
            <property name="cronExpression">
                <value>0 0 0/1.5 * * ?</value>
            </property>
        </bean>
        <!-- 總管理類 如果將lazy-init='false'那么容器啟動就會執行調度程序  -->
        <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="doTime"/>
                </list>
            </property>
        </bean>

查看完整回答
反對 回復 2022-10-12
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

有可能是你第一個任務一直都沒有返回,所以后續的任務不會再執行了,因為你配置的是單線程,此時線程一直被第一個任務占用著呢。

查看完整回答
反對 回復 2022-10-12
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

另外quartz本意就是多線程執行的,不知出于什么考慮你要實現單線程?

查看完整回答
反對 回復 2022-10-12
  • 4 回答
  • 0 關注
  • 392 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號