两个方法,第一个如果你是ajax分页的,那么可以试试看通过jquery中的serialize方法将表单中的查询条件序列化生成条件参数加入分页url中;第二个是通过request获取上次查询的url,从url中获取条件参数。
不需要这么麻烦,framework 40有Task其ContinueWith()方法满足你的需求
Task内部实现也是调用线程池
TaskFactoryStartNew(取数据方法())ContinueWith(task =>{
其他逻辑();
});
如果 程序中创建了大量的生命期很短的线程 ,应该 使用线程池(thread pool) 。一个线程池中包含许多准备运行的空线程。将Runnable对象交给线程池,就会有一个线程调用run方法。当run方法退出时,线程不会死亡,而是在池中准备为下一个请求提供服务。
另一个使用线程池的理由是减少并发线程的数目 。 创建大量线程会大大降低性能甚至使虚拟机崩溃 。如果有一个会创建许多线程的算法, 应该使用一个线程数“固定的”线程池 以限制并发线程的总数。
执行器(Executor)类有许多静态工厂方法用来构建线程池。
上面3个方法返回实现了ExecutorService接口 的 ThreadPoolExecutor类的对象 。
可以使用下面的方法 将一个Runnable对象或Callable对象提交给ExecutorService :
该线程池会在方便的时候尽早执行提交的任务。 调用submit时 , 会得到一个Future对象 ,可用来查询该任务的状态。
第一个submit方法返回一个Future<>。可以使用这样一个对象来调用isDone、cancel或isCancelled。但是,get方法在完成的时候只是简单地返回null。
第二版本的Submit也提交一个Runnable,并且Future的get方法在完成的时候返回指定的result对象。
第三个版本的Submit提交一个Callable,并且返回的Future对象将在计算结构准备好的时候得到它。
当用完一个线程池的时候,调用shutdown 。该方法 启动该池的关闭序列 。被关闭的执行器 不再接受新的任务 。当 所有任务都完成以后,线程池中的线程死亡 。另一种方法是调用 shutdownNow 。该池 取消尚未开始的所有任务并试图中断正在运行的线程 。
总结在使用线程池时应该做的事:
继续以一个计算匹配的文件数目程序为例:
ScheduledExecutorService接口 具有 为预定执行 (Scheduled Execution)或 重复执行任务而设计 的方法。它是一种允许使用线程池机制的javautilTimer的泛化。Executors类的 newScheduledThreadPool 和 newSingleThreadScheduledExecutor方法 将返回实现了ScheduledExecutorService接口的对象。
可以预定Runnable或Callable在初始的延迟之后只运行一次。也可以预定一个Runnable对象周期性地运行。详见API。
以上就是关于jfinal中怎么使用线程池全部的内容,包括:jfinal中怎么使用线程池、C# winform中判断线程池、异步多线程----执行器(Executor)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)