精华内容
下载资源
问答
  • 多任务处理
    千次阅读
    2013-04-11 14:07:58
    抢占式多任务处理是计算机操作系统中,一种实现多任务处理的方式,相对于 协作式多任务处理而言。协作式环境下,下一个进程被调度的前提是当前进程主动放弃时间片;抢占式环境下,操作系统完全决定 进程调度方案,操作系统可以剥夺耗时长的进程的时间片,提供给其它进程。
    更多相关内容
  • 因为很简单想必大多数人都应该明白了,并能应用于实际的工作中,但有的时候会遇到某张表数据比较大(几万,甚至几十万上百万),这样的数据是不是用不了FastFoots,因为他不是需要建个任务列表么,这只有一个表怎么...

    (一)引言

    上一个章节我们讲了如何将FastFoot应用于多表读取,因为很简单想必大多数人都应该明白了,并能应用于实际的工作中,但有的时候会遇到某张表数据比较大(几万,几十万甚至上百万),这样的数据表是不是用不了FastFoot,因为他不是需要建个任务列表么,这只有一个表怎么来建?

    (二)分析如何将单个大数据表分解

    有些人可能会联想到,如果我把这个表的数据分成块是不是就能用FastFoot进行快速的读取了,回答是肯定的,我们可以这样做。

    (三)具体解决方案

    做过后台管理系统的同学们都接触过列表页面的检索,在列表页面最常用的技术就是分页,那么我们是不是也可以用分页来实现数据读取任务的分解呢,答案想必不用我说大家也知道了。下面我介绍一下具体的实现过程。

    • 利用PageHelp组件建立分页列表(任务列表)
    // 设定分页件数
    int step = 1000;
    // 取得表数据的总件数
    int count = codeMapper.count("DM_BIG_TABLE");
    // 计算分页
    int pageNum = count % step == 0 ? count / step : count / step + 1;
    // 任务分解
    List<TablePageRequest> taskList = new ArrayList<>();
    for (int i = 1; i <= pageNum ; i++) {
        taskList.add(new TablePageRequest(i, step, tableName));
    }
    
    • TablePageRequest定义如下:
    public class TablePageRequest implements Serializable {
        private int page = 0;
        private int limit = 10;
        private String tableName;
    }
    
    • 创建function函数
    Function<TablePageRequest,Page<Code>> function = request -> {
        PageHelper.startPage(request.getPage(), request.getLimit(),false);
        return codeMapper.selectAllPage(request.getTableName());
    };
    
    • selectAllPage定义如下:
    Page<Code> selectAllPage(@Param("tableName")String tableName);
    ----------------------------------------------------------------------------------
    <select id="selectAllPage" parameterType="java.lang.String" resultType="BaseResultMap">
      select * from ${tableName}
    </select>
    
    • 最后就可以通过FastFoot执行了
    Map<TablePageRequest,Page<Code>> map = FastFoot.runTasks(taskList, function);
    

    (四)结论

    如果单表数据越大,使用FastFoot的优越性越明显,同时可以通过调整step和feet来测试哪种组合是最优的。

    展开全文
  • 一个简单的分阶段多任务处理实例

    千次阅读 2012-08-23 09:52:09
    我们经常需要处理一个很耗时的任务,一般只有其中几步是十分耗时的,此时我们想到的是线程来处理任务。但是往往我们不能简单地把整个任务弄成线程程序。如:文件的读取,文件的写入需要单线程处理(如果线程...
    1、概述
    我们经常需要处理一个很耗时的任务,一般只有其中几步是十分耗时的,此时我们想到的是多线程来处理此任务。但是往往我们不能简单地把整个任务弄成多线程程序。如:文件的读取,文件的写入需要单线程处理(如果多线程处理需要加锁,此时性能没有单线程快)。为了解决此类问题,此我们可以用到,生产者与消费者的模式。本质上是Staged Event Driven Architecture的原型。
    2、具体分析
    我们把中间数据存入中间的queue。大致流程如下:

    其中一部分如果比较耗时的话,我们可以用多个线程处理。
    3、例子,java代码实现
    我们把文件mid.txt中的一个个mid,查询数据库换成aliid,再写到另一个文件中,格式为:mid\taliid。
    其中查询数据库比较耗时,我们可以多弄一个线程来处理这个耗时的任务。(由于是io密集型的任务,我们可以采取大于CPU个数的线程处理)
    java实现注意几点:
    1. java.util.concurrent.BlockingQueue这个类是数据安全的,注意阻塞的写法。
    2. java.util.concurrent.ExecutorService注意线程是否完成


    展开全文
  • 最近的智能手机系统都开始支持多任务,iOS从iOS4开始,而android原生支持,其他的如WP7,webOS都支持多任务。但是,因为手机系统资源和硬件资源的限制,手机系统的多任务并不像我们在普通PC操作系统中使用的那样,...

    最近的智能手机系统都开始支持多任务,iOS从iOS4开始,而android原生支持,其他的如WP7,webOS都支持多任务。但是,因为手机系统资源和硬件资源的限制,手机系统的多任务并不像我们在普通PC操作系统中使用的那样,而是有一定差异。我们提到多任务时,不同的人有不同的解释:1)向很多桌面系统(如windows 7,mac os X,linux等)那样,确实有多个程序在同时运行,当你从一个任务切换到另一个时,他们一直在正常运行,一般不会被结束。2)仅仅是在不同应用程序间快速切换的功能。当你切换为其他程序时,原程序被挂起,暂停执行,因此当返回时,好像多任务在同时进行。

    手机系统的多任务往往介于两者之间,在第二种情况上做一些有限的扩展,而不像第一种情况那么强大。先说说iOS。从iOS4开始支持多任务,iOS4.2有了重大升级而且可以在iPad上使用多任务了。iOS4只是称为快速应用程序切换(fast app switching),可以通过双击home键呼出。到iOS4.2,iOS有三种多任务:
    第一种:保持现场
    “保持现场”并非多任务,而是一种看起来像多任务的单任务。按下 Home 后,程序自己保存状态。下次呼出,自己恢复保存下来的现场。看起来和没有退出过差不多。这并非 iOS4 的新特性, Tweetie 在 iOS4 之前就支持了。
    第二种:iOS4 多任务
    “iOS4 多任务”是受限制的多任务。按下 Home ,程序切换到后台时仍保持在内存中,可以执行一些系统允许的动作:比如播放音乐。iOS4 多任务的程序如果在后台无动作,那么表现和“保持现场”的程序差不多。有些程序,比如 Twitter for iPhone ,在“保持现场”的同时支持了 iOS4 多任务。iOS4 多任务比“保持现场”更快,并且可以后台动作。坏处是会占用内存。而且,万一在后台被杀掉,又不支持“保持现场”,那么再载入会丢掉上次的状态。比如那个优雅但是功能不足的推特客户端新锐: Weet 。
    第三种:真多任务
    Safari ,Mail 等程序有真正的多任务权限:在后台可以无限制动作。对手机而言,不限制这种多任务有些缺点。一个未知的程序可能会在后台执行很重的任务,让电力在用户无察觉的情况下消耗光。另外,安全性也不是很靠谱。所以苹果仅允许少数几个程序拥有这个权限。甚至苹果自己也没有滥用: Messages , Photos 都是苹果的嫡系,却仅支持 iOS4 多任务而已。

    iOS 4 上的第三方软件在什么情况下会真正退出?有三种情况:
    一、系统为了省出内存而终止某个程序。这时系统不会通知用户程序,用户无法捕捉该事件。
    二、用户长按「抽屉」中的软件,点左上角的减号手动终止程序。
    三、尚未为 iOS 4 重新编译的第三方软件是无法被冻结的,只要你退出了这个软件,它就直接被终止了。

    android系统对多任务的处理相对成熟而简单些。
    Android同样也拥有优秀的多任务能力,甚至于为了优化多任务的性能,他还十分有创意的使用了一种被称作“预热”的机制,以便加速常用程序的启动。

    • 所有程序在运行时可以按”Home”键返回桌面
    • 程序最小化之后,可以通过重新运行的方法来激活
    • 按住”Home”可以调出最近运行过的6个程序,点击可以快速切换
    • 必要时程序可以使用通知栏进行提醒

    android 没有任务管理器,不过可以通过第三方的任务管理器来实现任务管理功能。android Home键调出的最近6个运行过的程序;以及强大的通知栏提醒。

    device-2

    其中一个改变,就是强化了很多的状态栏。只要程序需要,就可以在状态栏中放置通知。

    对于唯一一个全局显示的状态栏而言,他显然是一个天生的导航系统。

    • 在WM中也有同样的状态栏,但不同的是,状态栏仅仅是为了显示图标,其作用类似于Windows系统的托盘区域,不同的图标代表的意义可能是完全不同的
    • 在Android中,尽管图标同样会显示在状态栏,但是无法被点击。唯一可以做的事情就是将状态栏脱下来,查看最近的通知消息

    这是一个非常有意义的改进。尽管只是一个很细节的变化,但是他最大限度的避免了因为“同一个区域,不同的图标,完全不同的效果”对用户所造成的混乱。

    当然,这也是一个非常优秀的导航。正在播放的音乐、QQ的状态,如果有需要的程序,都可以在这里显示;而将通知消息独立则最大程度避免了出现和WM相同的混乱。

    device[5]

    Home键所调出的快捷菜单,其实根本就是一个简化版的任务管理器。他最大限度的简化了任务管理器给用户所带来的迷惑:毕竟身为一个普通用户,并不需要去关心内存占用之类的情况——只要系统始终流畅运行就好。

    不过看来,这种设定并没有受到广泛的追捧。一个很大的问题在于,他没有明确的标记出究竟哪个才是正在运行的程序。已经被关闭的程序,和刚刚最小化的程序,看起来都是一个样子。于是,用户需要花费额外的成本去记忆究竟哪个才是正在运行的程序。相应的,这必然带来了糟糕的用户体验。再加之他这个预热的功能显然是“代替用户作出决定”最佳的反面教材,于是也就不难理解为何市场中各种第三方的任务管理器如此火爆了。

    a-task

    android 中退出程序时都不会自动退出,而是转入后台,以提高下次启动的速度。同样,android 的后台任务也会因为系统资源的限制而被系统终止而回收内存的资源。这对于系统的流畅运行时必不可少的。

    本文仅对iOS4和android系统的多任务处理作一些描述性说明和一些浅显解释。笔者对手机系统应用不多,很多资料来源于网络。而且随着apple和google的更新,很多东西会随之改变。因此本文更多的是想引导读者进行思考一些我们平时可能忽略或者认为理所当然的东西。

    参考资料:what is fast app switching ?
             http://www.lolibeta.com/pc/1613.html

    展开全文
  • win10多任务处理快捷键

    千次阅读 2018-01-14 11:50:22
    任务视图快捷键win+Tab,显示当前运行的任务程序; win+Ctrl+D,新建桌面窗口,可以重新再进行个程序操作,这样子就不会觉得很乱啦; win+Ctrl+←/→,切换新建桌面窗口; win+Ctrl+↑/↓,是程序右上角的最大化、...
  • ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。本文中对Fork/Join框架的讲解,基于JDK1.8+中的Fork/Join框架...
  • 多任务是什么?如何执行?

    千次阅读 2022-03-22 18:25:50
    多任务是指在同一时间内执行多个任务,任务的执行方式并发和并行两种方式,使用多任务就能充分利用CPU资源提高程序的执行效率,让程序具备处理多个任务的能力。 学习目标:掌握多任务的执行方式。
  • …… public class AtomicInteger extends Number implements java.io.Serializable { …… private volatile int value; …… private static final long valueOffset; …… // 获取到value属性的内存偏移量...
  • // 该方法试图从“w”这个队列获取下一个待处理任务 if ((t = w.nextLocalTask()) != null) return t; // 如果没有获取到,则使用findNonEmptyStealQueue方法 // 随机得到一个元素非空,并且可以进行任务窃取...
  • 关于STM32的裸机多任务多线程心得

    万次阅读 多人点赞 2019-03-30 18:17:47
    多任务"并行处理" 首先我们来理解一下并行处理,初学者写程序通常是顺序执行,当我们逐渐想成为“专业”人士的时候顺序执行 的程序已经不能满足我们了,所以就需要多任务多线程系统,市面上标准的一些操作系统比如...
  • 自然语言处理任务详解(万文图)

    万次阅读 多人点赞 2022-05-10 16:03:58
    1. 基础自然语言任务 1.1 语法任务 1.1.1 语法任务:以词为基本单元 1.1.2 语法任务:以句子为基本单元 1.1.2.1 成分句法分析 1.1.2.2 依存句法分析 1.1.2.3 组合范畴语法 1.2 语义任务 1.2.1 语义任务:以词为基本...
  • 线程异步任务处理

    千次阅读 2018-11-07 21:29:31
    文章目录线程异步任务处理线程池线程池的优缺点常用的线程池技术@Async注解源码   我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,那我们怎么去使用它呢?我们先来了解下什么是...
  • 【Windows】win10多桌面与多任务

    千次阅读 2018-06-04 15:01:01
    多桌面1、【win+Tab】-&gt;新建桌面2、使用【win+Ctrl +[←、→]】进行切换多任务分区1、使用鼠标拖拽窗口2、使用【win+[↑、↓、←、→]】
  • 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。 再打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。 并行执行多任务只能在多核...
  • Java线程并行处理任务的实现

    万次阅读 2019-04-20 21:08:02
    Java线程并行处理任务的实现 在实际项目开发的过程中,遇到过需要处理一个由个子任务组成的任务的问题.顺序处理起来会造成响应时间超长,用户体验不好的问题.我想到一个解决方案,即使用线程并行处理任务.思路...
  • python使用进程高效处理任务

    万次阅读 2022-05-05 14:21:59
    通常我们使用的程序都是单进程的,就好比我们只有一个工人在搬运货物,一次一次地来回搬运,线程则是个工人同时在搬运货物。而我们的电脑很都是八核甚至是十六核的,平时我们写的程序就只是单进程在运行,其余...
  • 项目中有使用Spring定时执行任务的需求,用户可以自定义时间(半小时或整点)去生成需要的报表并发送邮件到用户自己的邮箱。 项目里面提供的时间是半小时或整点去执行Spring定时任务,查询数据库中有哪些Schedule是...
  • springboot之多任务并行+线程池处理

    万次阅读 多人点赞 2018-05-14 16:20:34
    最近项目中做到一个关于批量发短信的业务,如果用户量特别大的话,不能使用单线程去发短信,只能尝试着使用多任务来完成!我们的项目使用到了方式二,即Future的方案 Java 线程池 Java通过Executors提供四...
  • php利用进程处理任务

    万次阅读 2018-12-17 11:37:23
    php利用进程处理任务 注:php进程一般应用在php_cli命令行中执行php脚本,做进程任务时要检查php是否开启了pcntl扩展,(pcntl是process control进程管理的缩写) pcntl_fork — 在当前进程当前位置产生分支...
  • 线程处理任务并合并数据

    千次阅读 2018-12-29 17:19:28
    newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待...
  • 日常的批量处理任务中,经常需要使用线程同时处理大量任务,一次读取一定数量的数据,然后放入线程池中等待线程处理完成,再取一定数量数据进行循环处理。 效率比较低的方式是使用同步的for循环进行处理 其次就是...
  • PHP进程处理并行处理任务实例

    万次阅读 2015-07-22 15:15:40
    本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步。写得比较简单,作为备忘录。 PHP进程 通过pcntl_XXX系列函数使用进程功能。注意:pcntl_XXX只能运行在...
  • Java线程之运行任务处理所有结果

    万次阅读 热门讨论 2018-08-23 23:13:47
    执行器框架给我们提供了一个方法,让我们可以发送给执行器一个任务列表,并等待任务列表中的所有任务执行完毕。然后它将返回一个与任务列表对应的Future列表。 package com.primer.demo.util; import lombok....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,690,331
精华内容 676,132
关键字:

多任务处理

友情链接: Notepad.rar