如何在job的执行过程中修改job自身的下次执行时间

如何在job的执行过程中修改job自身的下次执行时间,第1张

如何在job的执行过程中修改job自身的下次执行时间

程序变量

查看文件中某变量的值:

file::variable

function::variable

可以通过这种形式指定你所想查看的变量,是哪个文件中的或是哪个函数中的。例如,查看文件f2c中的全局变量x的值:

gdb) p 'f2c'::x

查看数组的值

有时候,你需要查看一段连续的内存空间的值。比如数组的一段,或是动态分配的数据的大小。你可以使用GDB的“@” *** 作符,“@”的左边是第一个内存的地址的值,“@”的右边则你你想查看内存的长度。例如,你的程序中有这样的语句:

int array = (int ) malloc (len sizeof (int));

于是,在GDB调试过程中,你可以以如下命令显示出这个动态数组的取值:

p array@len

如果是静态数组的话,可以直接用print数组名,就可以显示数组中所有数据的内容了。

JobScheduler 主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况,涉及的条件可以是网络、电量、时间等,例如执行特定的网络、是否只在充电时执行任务等。

JobScheduler类负责将应用需要执行的任务发送给框架,以备对该应用Job的调度,是一个系统服务,可以通过如下方式获取:

JobInfo是传递给JobScheduler类的数据容器,它封装了针对调用应用程序调度任务所需的各种约束,也可以认为一个JobInfo对象对应一个任务,JobInfo对象通过JobInfoBuilder创建。它将作为参数传递给JobScheduler:

JobInfoBuilder是JobInfo的一个内部类,用来创建JobInfo的Builder类。

JobService是JobScheduler最终回调的端点,JobScheduler将会回调该类中的onStartJob()开始执行异步任务。它是一个继承于JobService的抽象类,做为系统回调执行任务内容的终端,JobScheduler框架将通过bindService()方式来启动该服务。因此,用户必须在应用程序中创建一个JobService的子类,并实现其onStartJob()等回调方法,以及在AndroidManifestxml中对它授予如下权限:

注意在AndroidManifestxml中添加权限

当任务开始时会执行onStartJob(JobParameters params)方法,如果返回值是false,则系统认为这个方法返回时,任务已经执行完毕。如果返回值是true,那么系统认为这个任务正要被执行,执行任务的重担就落在了你的肩上。当任务执行完毕时你需要调用jobFinished(JobParameters params, boolean needsRescheduled)来通知系统。

当系统接收到一个取消请求时,系统会调用onStopJob(JobParameters params)方法取消正在等待执行的任务。很重要的一点是如果onStartJob(JobParameters params)返回false,那么系统假定在接收到一个取消请求时已经没有正在运行的任务。换句话说,onStopJob(JobParameters params)在这种情况下不会被调用。

需要注意的是这个Job Service运行在主线程,这意味着你需要使用子线程,handler,或者一个异步任务来运行耗时的 *** 作以防止阻塞主线程。

Google官方的Sample: >

dbms_jobsubmit(:job1,'MYPROC;',sysdate,'sysdate+5/1440');--每天1440分钟,即一分钟运行test过程一次,分子为5则为每分钟执行一次

具体可以参考我的百度云笔记:

>

建议先查杀一下木马,修复一下系统试试。

建议你下载恶意软件和木马强杀工具windows清理助手查杀恶意软件和木马:

下载网址:>

当然是用schedule更好, schedule的功能强大的多, 你如果是第一次用这个, 建议装个pl/sql developer, 在这里面新建schedule, 会让你很快上手, 一开始就直接写语句, 容易让人发晕, 而且pl/sql developer里面新建, 修改, 删除等 *** 作都可以看到对应的语句, 这样学习起来效果很好

等基本玩熟之后, 再云找些理论知识来看, 这样就OK了

本文分析了Eclipse中多线程程序的实现 讨论了在Eclipse客户端程序开发中应用多线程的方法和要注意的问题 同时也讨论了多线程程序的一些调试和问题解决的方法

Eclipse作为一个开发平台 使用越来越广泛 基于Eclipse Rich Client Platform开发的客户端程序也越来越多 在当今越来越复杂的应用环境中 我们的客户端程序不可避免的要同时进行多任务的处理 一个优异的客户端程序都会允许用户同时启动多个任务 从而大大提高用户的工作效率以及用户体验 本文中我们来谈谈Eclipse中实现多任务的方式

在我们基于Eclipse的Java程序中 我们有很多种方式提供多任务的实现 熟悉Java的朋友立即会想到Java的Thread类 这是Java中使用最多的一个实现多任务的类 Eclipse平台为多任务处理提供了自己的API 那就是Job以及UIJob Eclipse中的Job是对Java Thread的一个封装 为我们实现多任务提供了更方便的接口 以下是Job的基本用法

清单 Job用法示例

                Job job = new Job( Job Name ){protected IStatus run(IProgressMonitor monitor) {      // 在这里添加你的任务代码  return Status OK_STATUS; }};job schedule(delayTime);

在Eclipse中我们也会经常用到Display asynchExec() 和Display synchExec()来启动任务的执行 这两个方法主要为了方便我们完成界面 *** 作的任务 以下是Display asynchExec()的用法 Display synchExec()和它类似

清单 Display synchExec()用法示例

Display getDefault() asyncExec(new Runnable() {public void run() { // 在这里添加你的任务代码  } });

通常 在Eclipse中我们最好使用Eclipse提供的Job接口来实现多任务 而不是使用Java的thread 为什么呢?主要有以下几个原因

Job是可重用的工作单元 一个Job我们可以很方便的让它多次执行 Job提供了方便的接口 使得我们在处理中能够很方便的与外界交流 报告当前的执行进度 Eclipse提供了相应的机制使得程序员可以方便的介入Job的调度 例如我们可以方便的实现每次只有一个同一类型的Job在运行 Eclipse缺省提供了Job管理的程序 可以查看当前所有的Job和它们的进度 也提供UI终止 暂停 继续指定的Job 使用Job可以提高程序的性能 节省线程创建和销毁的开销 Eclipse中的Job封装了线程池的实现 当我们启动一个Job时 Eclipse不会马上新建一个Thread 它会在它的线程池中寻找是否有空闲的线程 如果有空闲线程 就会直接用空闲线程运行你的Job 一个Job终止时 它所对应的线程也不会立即终止 它会被返回到线程池中以备重复利用 这样 我们可以节省创建和销毁线程的开销 下面我们从几个方面来讨论Eclipse中Job的实现和使用方面的问题

Eclipse中Job的实现

Eclipse的核心包中提供了一个JobManager类 它实现了IJobManager接口 Eclipse中Job的管理和调度都是由JobManager来实现的 JobManager维护有一个线程池 用来运行Job 当我们调用Job的schedule方法后 这个Job会被JobManager首先放到一个Job运行的等待队列中去 之后 JobManager会通知线程池有新的Job加入了运行等待队列 线程池会找出一个空闲的线程来运行Job 如果没有空闲线程 线程池会创建一个新的线程来运行Job 一旦Job运行完毕 运行Job的线程会返回到线程池中以备下次使用 从上面Job运行的过程我们可以看到 JobManager介入了一个Job运行的全过程 它了解Job什么时候开始 什么时候结束 每一时候Job的运行状态 JobManager将这些Job运行的信息以接口的方式提供给用户 同时它也提供了接口让我们可以介入Job的调度等 从而我们拥有了更加强大的控制Job的能力

为了我们更方便的了解Job所处的状态 JobManager设置Job的一个状态标志位 我们可以通过Job的getState方法获得Job当前的状态值以了解其状态

NONE 当一个Job刚构造的时候 Job就会处于这种状态 当一个Job执行完毕(包括被取消)后 Job的状态也会变回这种状态 WAITING:当我们调用了Job的shedule方法 JobManager会将Job放入等待运行的Job队列 这时Job的状态为WAITING RUNNING:当一个Job开始执行 Job的状态会变为RUNNING SLEEPING:当我们调用Job的sleep方法后 Job会变成这一状态 当我们调用schudule方法的时候带上延时的参数 Job的状态也会转入这一状态 在这一段延时等待的时间中 Job都处于这一状态 这是一种睡眠状态 Job在这种状态中时不能马上转入运行 我们可以调用Job的wakeup方法来将Job唤醒 这样 Job又会转入WAITING状态等待运行

lishixinzhi/Article/program/Java/gj/201311/27703

以上就是关于如何在job的执行过程中修改job自身的下次执行时间全部的内容,包括:如何在job的执行过程中修改job自身的下次执行时间、JobScheduler的使用和原理、oracle的job怎么设置一个过程每5分钟执行一次等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9804365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存