精华内容
下载资源
问答
  • 2022-03-25 21:17:54

    方法一:
    关闭任务栏半透明,停止使用TranslucentTB等任务栏改透明软件,还原初始设置

    方法二:
    在命令提示符(cmd)中粘贴如下命令,并回车:
    HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\IrisService /f && shutdown -r -t 0

    方法三:
    微软授时服务器出现故障,在控制面板-时间和日期中更改授时服务器地址为
    ntp.ntsc.ac.cn(中国国家授时中心)重启。

    更多相关内容
  • 任务管理器是一个Android任务管理工具。它能够处理复杂的任务工作流程。低耦合,灵活且稳定。它支持基于关系的任务。所有任务将按照管理良好的顺序执行。它可以提交具有复杂关系的任务,例如“或依赖关系”或“与...
  • Windows任务管理器参数解释

    千次阅读 2019-06-05 18:04:55
    Windows任务管理器参数解释 一、概述及菜单  任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。 使用任务管理器可以监视计算机性能的关键指示。可以查看正在...

     Windows任务管理器参数解释


     

    一、概述及菜单

      任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。

    使用任务管理器可以监视计算机性能的关键指示器。可以查看正在运行的程序的状态,并终止已停止响应的程序。也可以使用多达 15个参数评估正在运行的进程的活动,查看反映 CPU 和内存使用情况的图形和数据。

      此外,如果与网络连接,则可以查看网络状态,了解网络的运行情况。

      如果有多个用户连接到您的计算机,您可以看到谁在连接、他们在做什么,还可以给他们发送消息。

    1,更改任务管理器中的显示选项

    单击与要更改的显示选项对应的选项卡。单击: “应用程序”选项卡,可以查看详细信息、大图标或小图标。 “进程”选项卡,可以选择要显示的列。 “性能”选项卡,可以更改 CPU 使用记录曲线图以及显示内核时间。 “网络”选项卡,可以查看有关网络连接的信息。在“查看”菜单上单击所需的命令。

    注意

    要显示内核时间以便在“CPU 使用”和“CPU使用记录”曲线图中添加红线,请单击“性能”选项卡。在“查看”菜单上单击“显示内核时间”。红线指示内核操作占用的 CPU资源数量。

    2,更新任务管理器数据

    在“查看”菜单上,单击“立即刷新”。

    注意

    要更改数据自动更新的频率,请在“查看”菜单上指向“更新速度”,然后单击所需的命令。 要暂时固定“任务管理器”中显示的数据,请在“查看”菜单上指向“更新速度”,然后单击“暂停”。 默认情况下,每隔两秒钟会对数据自动更新一次。

     

    二、“应用程序”选项卡显示计算机上正在运行的程序的状态。在此选项卡中,您能够结束、切换或者启动程序。

    1,启动新程序

    单击“应用程序”选项卡中的“新任务”。 在“打开”框中键入或选择要添加程序的名称,然后单击“确定”。

    注意

    “新任务”相当于“开始”菜单中的“运行”命令。 如果不知道要添加程序的名称,请单击“浏览”搜索该程序。

    2,切换到另一个程序

    在 “应用程序”选项卡上,单击要切换到的程序,然后单击“切换至”。

    3,更改正在运行的程序的优先级

    在 “进程”选项卡上,用右键单击要更改的程序,指向“设置优先级”,然后单击所需的命令。

    注意

    要查看正在运行的程序的优先级,请在“进程”选项卡上,单击“查看”菜单上的“选择列”。在“选择列”对话框中,选中“基本优先级”,然后单击“确定”。 更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。

    4,使用任务管理器终止程序

    在“应用程序”选项卡上,单击要终止的程序,然后单击“结束任务”。

    注意

    该程序中任何未保存的输入数据或所作更改均将丢失。 如果使用“结束任务”不能立即结束该程序,则可以单击要终止的程序,然后单击“转到进程”,在进程选项卡上进行操作。

     

    三、“进程”选项卡显示关于计算机上正在运行的进程的信息。例如,您可以显示关于 CPU和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。

    1,进程计数器列标题

    在“进程”选项卡上,可以使用下列计数器监视正在运行的进程,这些计数器可以显示为列标题。要将某个进程显示为列标题,请在“查看”菜单上单击“选择列”。选中与要显示为列标题的进程对应的复选框。

    基本优先级

      决定处理器处理进程线程的顺序的优先级。可以使用“任务管理器”查看和更改基本优先级。

      对于“消息队列”,则是指定队列在公共队列中的优先级的属性。您可以将基本优先级设置成从 -32,768 到32,767;默认的优先级是0。专用队列不支持基本优先级。“消息队列”首先根据基本优先级路由和传递消息,然后根据消息优先级路由和传递消息。

    CPU 时间

      在“任务管理器”中,进程从启动起使用的总处理器时间,以秒为单位。

    CPU 使用情况

      在“任务管理器”中,进程从上一次更新以来使用 CPU的时间百分比。在“任务管理器”的“进程”选项卡上,列标题是“CPU”。

    GDI 对象

      来自应用程序编程接口 (API) 的“图形设备接口”(GDI)库的对象,用于图形输出设备。在“任务管理器”中,指进程当前使用的 GDI 对象数。

    句柄数

      在“任务管理器”中,进程对象表中的对象句柄。(句柄:在用户界面中,指添加到某个对象的界面,便于操作移动、调整大小、调整形状或其他属于对象的功能。在程序设计中,指的是指针到指针,也就是,允许某个程序访问所识别的资源的标记。)

    图像名

      在“任务管理器”中的进程名称,即“映像名称”。

    I/O 其他

      在“任务管理器”中,由进程产生的非读非写的输入/输出操作的数量,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。指向 CONSOLE (控制台输入对象)句柄的“其他类型的 I/O”不计算在内。

    I/O 其他字节

      在“任务管理器”中,由进程产生的非读非写的输入/输出操作中所传输的字节数,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。定向到 CONSOLE (控制台输入对象)句柄的“其他类型的 I/O字节”不计算在内。

    I/O 读取

      在“任务管理器”中,由进程产生的读的输入/输出操作的数量,这包括文件、网络和设备I/O 。该操作类型的范例是控制函数。定向到CONSOLE (控制台输入对象)句柄的“I/O 读操作”不计算在内。

    I/O 读字节

      在“任务管理器”中,由进程产生的输入/输出操作中的读取的字节数,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。定向到 CONSOLE (控制台输入对象)句柄的“I/O 读取字节”不计算在内。

    I/O 写入

      在“任务管理器”中,由进程产生的写的输入/输出操作的数量,这包括文件、网络和设备I/O 。该操作类型的范例是控制函数。定向到CONSOLE (控制台输入对象)句柄的“I/O 写操作”不计算在内。

    I/O 写字节

      在“任务管理器”中,由进程产生的输入/输出操作中的写入的字节数,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。定向到 CONSOLE (控制台输入对象)句柄的“I/O 写入字节”不计算在内。

    内存使用情况

      在“任务管理器”中,进程的当前工作集,以千字节为单位。当前工作集是当前驻留在内存中的页面数。在“任务管理器进程”选项卡中,列标题是“内存使用”。

    内存使用 Delta

      在“任务管理器”中,自上一次更新以来所使用的内存的改变量,以千字节为单位。

    非分页池

      永远不会页入磁盘的操作系统内存。页面调度就是将很少使用的程序工作内存部分从 RAM移到其他存储媒体,通常是硬盘。在“任务管理器”中,进程使用的内存量以 KB 为单位。

    页面错误

      当软件试图读取或写入标记为“不存在”的虚拟内存位置时发生的中断。

      在“任务管理器”中,页面错误是进程中当数据不在内存而必须从磁盘检索的次数。页面错误值从进程启动的时间开始累计。

    页面错误增量

      在“任务管理器”中,自上一次更新开始的页面错误次数的变化。

    分页池

      已指派给进程的,已及可以分页的系统分配的虚拟内存。页面调度就是将很少使用的程序工作内存部分从 RAM移到其他存储媒体,通常是硬盘。在“任务管理器”中,进程使用的系统分配虚拟内存数量以 KB 为单位。

    峰值内存使用率

      在“任务管理器”中,自进程启动以来驻留于进程中的物理内存的峰值。

    PID(进程标识符)

      唯一区分运行时的进程的数字标识符。使用“任务管理器”可以查看 PID。

    会话 ID

      拥有该进程的“终端服务”会话 ID 。只有安装了“终端服务”计数器才可以使用计数器。

    线程计数

      在“任务管理器”中,在进程中运行的线程数。

    用户名

      使 Windows标识用户帐户的唯一名称。帐户的用户名在其自身所在的域或工作组中的其他组名和用户名之中必须是唯一的。(用户:包含在服务器上的有用户权限的所有用户的特殊组。当Macintosh 用户将权限分配给每个人时,这些权限也将分配给组的用户和来宾。 )

    USER 对象

      “Window管理器”对象,包括窗口、菜单、光标、图标、异常分支、加速器、监视器、键盘布局和其他内部对象。在“任务管理器”中,指进程当前使用的USER 对象数。

    虚拟内存大小

      在“任务管理器”中,指分配给进程的虚拟内存数或地址空间。

      (虚拟内存:计算机使用的临时存储器,用来运行所需内存大于计算机具有的内存的程序。例如,程序可以访问计算机硬盘驱动器上 4GB 字节的虚拟内存,即使计算机只有 32 MB 的 RAM。当前没有装入计算机内存的程序数据将保存到页面文件中。)

      (页面文件:硬盘上的隐藏文件,Windows 用该文件来存储不能装入内存的程序和数据文件部分。页面文件和物理内存或 RAM构成虚拟内存。需要时,Windows将数据从页面文件移至内存,然后将数据从内存移至页面文件以便为新数据腾出空间。页面文件也被称为交换文件。 )

     

    2,指定进程计数器列标题

    在“进程”选项卡的“查看”菜单上,单击“选择列”。 选中与要显示为列标题的进程计数器对应的复选框,然后单击“确定”。

    注意

    有关进程计数器的详细信息,请单击“相关主题”。

    3,对进程列表排序

    在 “进程”选项卡上,单击您要根据其进行排序的列标题。

    注意

    要反转排序顺序,请再次单击列标题。 

    4,使用任务管理器终止进程

    在“进程”选项卡,单击要结束的进程,然后单击“结束进程”。

    要点

    终止进程时要小心。如果结束应用程序,您将丢失未保存的数据。如果结束系统服务,则系统的某些部分可能无法正常工作。

    注意

    若要结束某个进程以及由它直接或间接创建的所有进程,右键单击“进程”选项卡上要结束的进程,然后单击“结束进程树”。

    如果终止了电子邮件程序(如 Microsoft Outlook)的进程树,也就同时终止了相关的进程,如 MAPI 后台处理程序mapisp32.exe。

    5,给处理器指派进程

    在 “进程”选项卡上,用右键单击要指派的程序,单击“设置仿射性”,然后单击一个或多个处理器。

    注意

    “设置仿射性”命令仅在多处理器计算机上可用。 使用“设置仿射性”命令可以将程序或进程的执行限制在选定的处理器上,并且可能导致总体性能下降。

     

    四、“性能”选项卡显示计算机性能的动态概述,其中包括:

    CPU 和内存使用情况的图表。 计算机上正在运行的句柄、线程和进程的总数。 物理、核心和认可的内存总数(KB)。

    说明:查看计算机性能

    单击“性能”选项卡。

    注意

    “性能”选项卡显示有关计算机性能的信息,如 CPU 和各种内存的使用情况。 有关“性能”选项卡上显示的字段的详细信息,请单击“相关主题”。

    1,CPU 使用情况

    表明处理器工作时间百分比的图表。该计数器是处理器活动的主要指示器。查看该图表可以知道您当前使用的处理时间是多少。如果您的计算机看起来运行较慢,该图表就会显示较高的百分比。

    2,CPU 使用记录

    显示 CPU的使用程度随时间的变化情况的图表。图表中显示的采样情况取决于“查看”菜单上您选择的“更新速度”值。更新的几个可能值为: = 每秒两次;正常 = 每两秒一次; = 每四秒一次;暂停 =显示器不自动更新。

    3,PF 使用情况

    正被系统使用的页面文件的量。如果计算机运行接近最大限度,可以增大页面文件的大小。

    4,页面文件使用记录

    显示页面文件的量随时间的变化情况的图表。图表中显示的采样情况取决于“查看”菜单上您选择的“更新速度”值。

    5,总数

    计算机上正在运行的句柄、线程和进程的总数。

    6,执行内存 (K)

    分配给程序和操作系统的内存。由于复制到页面文件的内存(称为虚拟内存)的存在,“峰值”下所列的值可以超过最大物理内存。“总数”的值与“页面文件使用记录”图表中显示的值相同。

    7,物理内存 (K)

    计算机上所安装的总物理内存,也称为RAM。“可用”表示可供使用的内存的量。“系统缓存”显示当前用于映射打开的文件的页面的物理内存。

    8,内核内存 (K)

    操作系统内核和设备驱动程序所使用的内存。“分页”是可以复制到页面文件中的内存,由此可以释放物理内存。然后,物理内存可以由操作系统使用。“非分页”是保留在物理内存中的内存,不会复制到页面文件中。

     

    五、“网络”选项卡显示网络性能的图形表示。它提供了简单、定性的指示器,以显示正在您的计算机上运行的网络的状态。只有当网卡存在时,才会显示“网络”选项卡。

      在该选项卡上,可以查看网络连接的质量和可用性,无论是连接到一个还是多个网络上。

    说明:查看网络连接

    单击“网络”选项卡。

    注意

    只有当网卡存在时,才会显示“网络”选项卡。 “网络”选项卡指明与本地计算机接通的连接的网络流量。详细信息,请单击“相关主题”。

      “网络”选项卡提供有关本地计算机所连接的网络通信量的指示。通过参考它,可以很快决定正被消耗的网络带宽量。使用多个网络连接时,通过选项卡该可以轻松地比较每个连接的通信量。

      如果您的计算机上有多个网卡,则图表就会显示包含所有网络的复合索引,以表明所有网络通信量。

      为了在所有接口的网络通信量图表中都显示可见线条,视图会自动进行缩放,以放大通信量与可见带宽的关系视图。这样,在通信量低的情况下,图表的全高可以仅表示可用带宽的5%。当通信量高于该级别时,缩放程度将会减小,以便以较低的放大率显示当前通信量视图(例如,显示总可用带宽的10%)。图表上显示的百分比越大,通信量(相对于可用带宽)的放大率就越小。缩放系数显示在图表上。要禁用缩放功能,请在“选项”菜单上单击“自动缩放”以切换缩放系数的值。

      此外,还可以更改显示在图表下面的列标题。这些标题如下表所述。

    网卡名称是“网络连接”文件夹中网络适配器的名称。适配器描述 适配器的有关描述,通常与网络连接文件夹中的设备名称相同。网络利用 网络利用百分比,基于接口的初始连接速度。链接速度 源自初始连接速度的接口连接速度。发送字节吞吐量 在轮询时间周期内从计算机发出的通信量所使用连接带宽百分比。接收字节吞吐量 在轮询时间周期内计算机接收的通信量所使用连接带宽百分比。字节吞吐量 在轮询时间周期内发送和接收的通信量所使用连接带宽百分比。发送的字节数 到目前为止该连接上所发送的总字节数。累计,可以重置。接收的字节数 到目前为止该连接上所接收的总字节数。累计,可以重置。字节总数 到目前为止该连接上发送和接收的总字节数。累计,可以重置。发送的字节数/间隔 在轮询时间周期内该连接上所发送的总字节数。接收的字节数/间隔 在轮询时间周期内该连接上所接收的总字节数。字节数/间隔 在轮询时间间隔内该连接上发送和接收的总字节数。发送的单播数 更高级别的协议请求传送到单播地址的总字节数。该值中包括已被丢弃或未被发送的数据包。接收的单播数 更高级别的协议请求从单播地址接收的总字节数。单播数 到目前为止“发送的单播数”和“接收的单播数”的总计。发送的单播数/间隔 在轮询时间间隔内通过该连接由更高级别的协议请求传送到子网单播地址的总字节数。接收的单播数/间隔 在轮询时间间隔内通过该连接从子网单播地址传送到更高级别协议的总字节数。单播数/间隔 在轮询时间间隔内该连接的“发送的单播数”和“接收的单播数”的总计。发送的非单播数 到目前为止通过该连接由更高级别的协议请求传送到非子网单播地址的总字节数。接收的非单播数 到目前为止通过该连接从非子网单播地址传送到更高级别协议的总字节数。非单播数 到目前为止“发送的非单播数”和“接收的非单播数”的总计。发送的非单播数/间隔 在轮询时间间隔内通过该连接由更高级别的协议请求传送到非子网单播地址的总字节数。接收的非单播数/间隔 在轮询时间间隔内通过该连接从非子网单播地址传送到更高级别协议的总字节数。非单播数/间隔 在轮询时间间隔内“发送的非单播数”和“接收的非单播数”的总计。

     

    六、“用户”选项卡显示可以访问该计算机的用户,以及会话的状态与名称。“客户端名称”指定使用该会话的客户机的名称(如果有的话)。“会话”为您提供一个用来执行诸如向另一个用户发送消息、或连接到另一个用户会话这类任务的名称。

      只有在您所用的计算机启用了“快速用户切换”功能,并且作为工作组成员或独立的计算机时,才出现“用户”选项卡。对于作为网络域成员的计算机,“用户”选项卡不可用。

    说明:查看用户活动

    单击“用户”选项卡。

    注意

    如果启用“快速用户切换”,则会显示“用户”选项卡。有关“快速用户切换”的详细信息,请单击“相关主题”。 只有当所用计算机是工作组成员或独立计算机时,“快速用户切换”才可用。在属于网络域的计算机上,“快速用户切换”不可用。

      “用户”选项卡上的每个字段的说明如下。详细信息,请单击下列某项:

    1,用户

    显示登录该计算机的用户。

    2,ID

    显示该标识该计算机上的会话的数字 ID。

    3,状态

    显示会话的当前状态。“任务管理器”中的可能会话状态有“正在运行”和“已断开”。

    4,客户端名称

    如果有的话,指定使用会话的客户机的名称。

    5,会话

    显示该计算机上的会话名称

     

    展开全文
  • 使用Quartz实现定时任务(包含管理界面)

    万次阅读 多人点赞 2019-01-01 18:43:34
    ")来实现的,至于监控方面的,没有,就是通过在定时任务代码里面打一些日志,特别重要的定时任务,失败了额外发个邮件通知下,人工补偿。然后他又问了下现在需要重构定时任务,你有没有什么想法?然后我就简单的...

    引言

    年底出去面试的的时候,被问到如下问题: 定时任务是如何实现的?定时任务是如何监控的?因为我们项目中的定时任务就是使用Spring的@Scheduled(cron = "0 59 23 * * ?")来实现的,至于监控方面的,没有,就是通过在定时任务代码里面打一些日志,特别重要的定时任务,失败了额外发个邮件通知下,人工补偿。然后他又问了下现在需要重构定时任务,你有没有什么想法?然后我就简单的说了下,最好是提供个可视化界面,可以动态的操作定时任务,尤其是监控方面。当晚回来后找了些资料,无意间在"纯洁的微笑"博主分享的一篇博文中讲到了这个,他的博文原文地址找不到了,他上面是基于spring项目实现的,本人根据quartz的api在springboot中重新实现了个,项目地址:https://github.com/simonsfan/springboot-quartz-demo。该项目用springboot+mybatis+mysql+quartz实现的,提供定时任务可视化动态添加、修改、执行,并提供定时任务监控,界面大致如图:

    定时任务列表展示简图
    定时任务执行情况简图
    定时任务执行失败详情简图

    关于这个项目, 还有些地方需要完善,比如定时任务的查找、分页展示、我这里均没有实现,如果你在实际项目中需要使用,请自行完善下,还有比如更新定时任务执行情况记录表quartz_task_records的时机,需要再斟酌斟酌。如有任何疑问,欢迎留言讨论。


    上手Quartz

    关于quartz,可在官网http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/查看,这里着重要说的是其中几个比较重要的:

    1、maven引quartz依赖

    <!--quartz依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
    

    2、quartz核心组件包括

    • Scheduler:与quartz schedule交互的主要api
    • Job:Scheduler执行组件需要实现的接口
    • JobDetail:用于定义实现了Job接口的实例
    • Trigger:用于执行给定作业的计划的组件
    • JobBuilder:用于构建JobDetail实例,或者说定义Job的实例
    • TriggerBuilder:用于构建触发器实例

    使用示例代码:

    /**
     * 实现Job接口,重写execute方法
     */
    public class QuartzJobFactory implements Job {
    
    	protected Logger logger = Logger.getLogger(QuartzJobFactory.class);
    	
    	@Override
    	public void execute(JobExecutionContext context) throws JobExecutionException {
    		//TODO 这里是定时任务逻辑
    		logger.info("=================我是定时任务,每隔5秒执行一次==============");
    	}
    }
    /**
     * @ClassName QuartzService
     * @Description 系统初始化触发定时任务
     * @Author simonsfan
     * @Date 2019/1/1
     * Version  1.0
     */
    @Component
    public class QuartzService {
    
        private static final Logger logger = LoggerFactory.getLogger(QuartzService.class);
        private final String CRON_TIME = "*/5 * * * * ?";
        private final String TRIGGER_KEY_NAME = "00000000001";
    
        @PostConstruct
        public void taskInit() {
            logger.info("=========系统初始化加载定时任务开始========");
            try {
                SchedulerFactory schedulerFactory = new StdSchedulerFactory();
                Scheduler scheduler = schedulerFactory.getScheduler();
                TriggerKey triggerKey = TriggerKey.triggerKey(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP);
                JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class).withDescription("quartz测试定制化定时任务").withIdentity(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP).build();
                CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(CRON_TIME);
                CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
                scheduler.scheduleJob(jobDetail, cronTrigger);
                scheduler.start();
                logger.info("=========初始化定时任务加载完成=========");
            } catch (Exception e) {
                logger.info("==============初始化加载定时任务失败==============" + e);
                e.printStackTrace();
            }
        }
    
    }

    1、系统初始化加载这里是使用@PostConstruct注解触发,也可以通过实现InitializingBean接口的方式;

    2、调度器Scheduler实例是通过new构造的,也可以直接注入类SchedulerFactoryBean,如下

    /**
     * @ClassName QuartzService
     * @Description 系统初始化触发定时任务
     * @Author simonsfan
     * @Date 2019/1/1
     * Version  1.0
     */
    @Component
    public class QuartzService implements InitializingBean {
    
        private static final Logger logger = LoggerFactory.getLogger(QuartzService.class);
        private final String CRON_TIME = "*/5 * * * * ?";
        private final String TRIGGER_KEY_NAME = "00000000001";
    
        @Autowired
        private SchedulerFactoryBean schedulerFactoryBean;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            logger.info("=========系统初始化加载定时任务开始========");
            try {
                Scheduler scheduler = schedulerFactoryBean.getScheduler();
                TriggerKey triggerKey = TriggerKey.triggerKey(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP);
                JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class).withDescription("quartz测试定制化定时任务").withIdentity(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP).build();
                CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(CRON_TIME);
                CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
                scheduler.scheduleJob(jobDetail, cronTrigger);
                logger.info("=========初始化定时任务加载完成=========");
            } catch (Exception e) {
                logger.info("==============初始化加载定时任务失败==============" + e);
                e.printStackTrace();
            }
        }
    }

    如果是spring配置文件项目,则需要将SchedulerFactoryBean注入到spring中:

     <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" />

    核心功能

    下面来详细讲解下这个springboot-quartz-demo里面是如何做的。还是围绕着功能点来看,如开头截图所示,主要有: 定时任务展示、新增、修改、暂停或启动、立刻运行、详情(监控),首先新建了三张表,如下:

    分别用来记录-定时任务基础信息、执行情况、执行出错信息。然后是主要的执行定时任务逻辑编写,写在实现了Job接口的QuartzMainJobFactory类中:

    定时任务主要逻辑类

    这里设置了采用Http或Kafka的方式来执行定时任务里面的具体逻辑,方式可以自己扩展或替换,主要还是针对你的定时任务类型及现有的项目架构来具体选型。

    books 1、展示和新增功能就不用说了,直接对quartz_task_informations表select和insert即可。

    books 2、初始化加载,就是说,每次重启系统,要把之前建的定时任务加载进quartz的Scheduler调度器,他这里采用的就是@PostConstruct注解,在注入service前就先加载:

    初始化加载定时任务代码简图

    books 3、修改功能,这个要注意的是修改前一定要先暂停这个定时任务才能修改,然后就是注意下并发修改的情况,加入了乐观锁控制

    修改定时任务代码简图

    books 4、实时暂停或启动定时任务,启动表示使定时任务立刻生效,就是把该定时任务加入任务调度系统中;而暂停本质就是从任务调度系统中删除此定时任务

    暂停或启动定时任务代码简图

    books 5、立刻运行定时任务,这里使用到了AtomicInteger原子类来标识"立即运行定时任务"这个操作是否出现成功,关于AtomicInteger的一些知识,请移步至https://blog.csdn.net/fanrenxiang/article/details/80623884

    立即运行一次定时任务代码简图

    books 6、监控详情,如上所说,quartz_task_records表和quartz_task_errors表分别用来记录定时任务每次执行情况和执行失败的定时任务信息,每当定时任务跑成功一次(不管成功与否)都持久化到quartz_task_records表,每失败一次(这里的标志就是AtomicInteger)持久化至quartz_task_errors表,这样每次执行的定时任务都能被比较好的"监控",这两个保存操作夹杂在"立即运行一次" 和 "QuartzMainJobFactory类" 代码中。

    定时任务执行情况简图
    定时任务执行失败原因简图

    补充:

    1、有小伙伴反馈说,当定时任务的执行时间超过了任务执行周期,这个正在执行的定时任务是什么状态?被抛弃杀死进程了?还是正常执行?关于这点,我在上面的项目测试了下,把定时任务的执行时间表达式改为"*/3 * * * * ?"每3秒执行一次定时任务,但是在任务执行逻辑中加入Thread.currentThread().sleep(5000);模拟定时任务执行时长要消耗5秒,测试结果是:超过3s的任务会继续执行,而下一个任务开始时间会变成这个任务执行完成后的5秒,依次类推,也就是说类似于时间表达式改为了"*/5 * * * * ?"的执行效果了。

    2、我自己还想到的一个问题是: 当使用http方式调用定时任务逻辑时,如果接口逻辑过于复杂导致处理时间过长,或者可能是IO密集计算型任务,这个时候怎么办?还没验证,后期再补吧。


    来波广告: 推荐个微信公众号:720电影社,里面可以免费获取电影、电视剧资源,欢迎关注。


    books quartz官网:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/

    books springboot版本项目地址:https://github.com/simonsfan/springboot-quartz-demo

    books spring项目版本地址:https://github.com/justdojava/zx-quartz

    books 推荐阅读:elastic search搜索引擎实战demo:https://github.com/simonsfan/springboot-quartz-demo,分支:feature_es

    books 推荐阅读:分布式环境下保证定时任务单点运行:https://blog.csdn.net/fanrenxiang/article/details/79990386

    展开全文
  • 以往都可以通过任务管理器解决的,这回连开了三个依旧不行 长按了键盘上的关机,仍然无法彻底关闭任务管理器的进程,重启后还是原样 解决办法 依旧按一下键盘上的关机,电脑睡眠待机 再按一次开机,电脑重启,进入...

    莫名其妙电脑出了毛病,资源管理器卡死,放到任务栏鼠标转圈圈,什么操作都做不了。
    以往都可以用任务管理器停止进程解决,但是这次连开了三个都不行。
    在这里插入图片描述
    长按了键盘上的关机,重启后还是原样,仍然无法解决。


    解决办法

    依旧按一下键盘上的关机,电脑进入睡眠待机状态;
    再按一次开机,电脑重启,进入输入密码的初始界面;
    右下方点击关机键,上方跳出的此处有一个关机,点击后电脑彻底关机。
    在这里插入图片描述
    再次开机即可。


    呜呜呜三年的老爷机老是出问题

    展开全文
  • UCOSIII任务管理

    千次阅读 2022-03-12 15:51:09
    对UCOSIII系统的任务管理包括了任务的创建、任务挂起、任务的删除以及任务的调度等。 UCOSIII的启动和初始化 最先肯定是调用OSInit()初始化UCOSIII。 创建任务,一般我们在main()函数中只创建一个start_task任务...
  • 转贴 详解任务管理器

    千次阅读 2011-05-08 22:10:00
    详解任务管理器 樱木花盗 发表于 2010-12-1 16:05:36 ㈠、概述及菜单 任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。使用任务管理器可以监视计算机性能的...
  • 【UCOSIII】UCOSIII的任务管理

    千次阅读 2018-06-23 21:16:31
    UCOSIII是多任务系统,那么肯定要能创建任务,创建任务就是将任务控制块、任务堆栈、任务代码等联系在一起,并且初始任务控制块的相应字段。在UCOSIII中我们通过函数OSTaskCreate()来创建任务,OSTaskCreate()函数...
  • windows任务管理器 参数解释

    千次阅读 2013-01-31 21:46:25
     任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。 使用任务管理器可以监视计算机性能的关键指示。可以查看正在运行的程序的状态,并终止已停止响应的程序。也可以...
  • 通过Quatrz定时任务管理,动态添加修改定时任务,比如添加新的定时任务、修改任务执行时间、暂停定时任务、删除定时任务等,并且监控定时任务状态
  • 一、RTX的初始化和启动 1、RTX的初始化函数有三个,可以打开rlarm.chm手册,如下图 这三个函数的解析和使用方法大家可以参考手册, 这里重点介绍下os_sys_init_user函数,其他两个有兴趣的可以自己看看手册 函数原
  • 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 ...在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换
  • 嵌入式系统 - 任务管理

    千次阅读 2017-12-18 20:16:01
    任务管理机制任务管理与调度任务管理任务管理是实时内核的主要工作,完成任务创建、任务删除、任务调度、改变任务优先级等工作任务状态与变迁 等待(waiting):任务在等待某个事件的发生 就绪(ready): 任务等
  • 文章目录一、功能说明二、快速使用三、实现原理1、动态管理实现(1) 配置管理介绍(2) 使用后处理器拦截SpringBoot原本的定时任务(3) 使用ApplicationRunner初始化自定义的定时任务运行(4) 进行动态管理2、增强接口...
  • 继续上一节的讲解,uCOS-II通过OSTaskCreate()和OSTaskCreateExt()来创建任务,后者相当于前者的一些扩展。 下面对OSTaskCreate()的源码进行讲解:   INT8U OSTaskCreate( void (*task)(void *pd),...
  • 在使用freertos时如何为lvgl配置心跳和任务管理器配置lvgl心跳(Tick)配置lvgl任务管理器(Task Handler) 配置lvgl心跳(Tick) 参考lvgl中文文档中的说明:...
  • 先分析设计多线程定时任务管理器的思路。 首先,任务管理器类命名为WatchThread类,需要使用多线程,那我们可以使用thread类,并使用Thread里面的线程start和run。那我们可以设计如下: #include class WatchThread:...
  • 一、任务执行和调度(Task Execution and Scheduling) 1、介绍 Spring框架使用TaskExecutor和TaskScheduler接口分别为异步执行和任务调度提供抽象。 Spring还提供了那些接口的实现,这些接口在应用服务器环境中...
  • 实验二 任务的基本管理

    千次阅读 2019-01-17 12:05:22
    1,理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程; 2,掌握 uC/OS-II 中任务管理的基本方法(创建、启动、挂起、解挂任务); 3,熟练使用 uC/OS-II 任务管理的基本系统调用。 二、实验原理 ...
  • OSAL之任务管理

    千次阅读 2015-05-10 22:39:42
    转载请注明出处,尊重原创总论OSAL每个任务最多只能支持16个事件处理,对于一些运算能力不强,内存...OSAL的任务管理代码主要在OSAL.c中。1、定义任务事件处理函数的格式最常用的任务函数格式是:有几个参数以及返回
  • 简单,易用,轻量级.NET定时任务执行管理器开源组件–FluentScheduler
  • 【游戏开发实战】Unity从零做一个任务系统(含源码工程 | 链式任务 | 主线任务 | 分支任务
  • springboot2整合Quartz持久化定时任务管理界面

    万次阅读 多人点赞 2018-10-24 09:50:19
    在默认情况下Quartz将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能,因为内存中数据访问最快。不足之处是缺乏数据的持久性,当程序路途停止或系统崩溃时,所有运行的信息都会丢失 比如我们希望安排一...
  • 3.任务管理机制

    千次阅读 2017-06-15 14:14:37
    任务管理服务 uC/OS-III 提供了很多与任务相关的函数。这些函数可以在OS_TASK.C 中找到,它们都以以OSTask***()形式命名的。如下 分组 函数 普通的 OSTaskCreate():创建人物 ...
  • 任务管理; extern struct TASKCTL *taskctl; extern struct TIMER *task_timer; struct TASK *task_now(void); struct TASK *task_init(struct MEMMAN *memman); struct TASK *task_alloc(void); void task_...
  • 必须JobManager初始化方式1:public void Start() { JobManager.AddJob(() =&gt; FetchingData(), schedule =&gt; { schedule.ToRunEvery(1).Days().At(10, 8); ...
  • 当进入Window的磁盘管理实用程序,发现磁盘是未知的,未初始化的,未分配的,那么如何修复未初始化的磁盘?还有丢失数据之后怎么找回?”第1部分:初始化磁盘意味着什么?初始化存储设备(非常类似于格式化过程)是一...
  • Springboot异步任务执行及监控

    千次阅读 2018-08-03 09:13:57
    Springboot异步任务执行及监控 除了自己实现线程外,springboot本身就提供了通过注解的方式,进行异步任务的执行。下面主要记录一下,在Springboot项目中实现异步任务,以及对异步任务进行封装监控。 1 开启异步...
  • mmc无法创建管理单元解决方法

    千次阅读 2021-07-15 06:31:59
    XP系统打开组策略编辑提示“mmc无法创建管理单元”是怎么回事?下面秋叶系统小编和大家说说mmc无法创建管理单元的解决方法。具体提示内容为:MMC 无法创建管理单元。MMC 未能创建管理单元。管理单元可能未正确安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396,336
精华内容 158,534
关键字:

任务管理器怎么初始