当前位置: 首页 > news >正文

河南做网站送记账设计师网络用语

河南做网站送记账,设计师网络用语,创建网页费用,营销推广模式有哪些封装了各种类型的线程池#xff0c;方便直接使用 看下有哪些类型#xff1a; 默认线程池#xff0c;搜索模块专用线程池#xff0c;网络请求专用线程池#xff0c;U盘更新#xff0c;同步SDK读写操作线程池#xff0c;日志打印使用线程池 DEFALUT#xff0c;SEARCH方便直接使用 看下有哪些类型 默认线程池搜索模块专用线程池网络请求专用线程池U盘更新同步SDK读写操作线程池日志打印使用线程池 DEFALUTSEARCHNET_WORKUDISK_DOWNLOADSDK_IOLOG_PRINT 看下有哪些优先级级别 UI_TOP, UI_NORMAL, UI_LOW, DEFAULT, BG_TOP, BG_NORMAL, BG_LOW; 一实现默认线程池 接下来先实现一个 默认实现 等待队列 优先级比较核心线程数等的线程池 开放 核心线程数线程创建的工厂类可以定制线程的优先级供 外部定制你也可以开放更多的参数 public class TaskPriorityExecutor implements Executor {private static final int CORE_POOL_SIZE 3;private static final int CPU_COUNT Runtime.getRuntime().availableProcessors();private static final int MAXIMUM_POOL_SIZE CPU_COUNT * 2 1;private static final int KEEP_ALIVE 30;private static final ComparatorRunnable RUNNABLE_COMPARATOR new ComparatorRunnable() {Overridepublic int compare(Runnable lhs, Runnable rhs) {if (lhs instanceof TaskPriorityRunnable rhs instanceof TaskPriorityRunnable) {return ((TaskPriorityRunnable) lhs).priority.ordinal() - ((TaskPriorityRunnable) rhs).priority.ordinal();} else {return 0;}}};private final BlockingQueueRunnable mPoolWorkQueue new PriorityBlockingQueueRunnable(MAXIMUM_POOL_SIZE, RUNNABLE_COMPARATOR);private final ThreadPoolExecutor mThreadPoolExecutor;public TaskPriorityExecutor() {this(CORE_POOL_SIZE, new TaskThreadFactory(Defalut));}public TaskPriorityExecutor(int poolSize, ThreadFactory threadFactory) {mThreadPoolExecutor new ThreadPoolExecutor(poolSize,MAXIMUM_POOL_SIZE,KEEP_ALIVE,TimeUnit.SECONDS,mPoolWorkQueue,threadFactory);}/*** 该构造器会创建单线程池执行任务*/public TaskPriorityExecutor(ThreadFactory threadFactory) {mThreadPoolExecutor new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueueRunnable(),threadFactory);}public int getPoolSize() {return mThreadPoolExecutor.getCorePoolSize();}public void setPoolSize(int poolSize) {if (poolSize 0) {mThreadPoolExecutor.setCorePoolSize(poolSize);} // Executors.newCachedThreadPool() // Executors.newFixedThreadPool() // Executors.newScheduledThreadPool() // Executors.newSingleThreadExecutor() // Executors.newSingleThreadScheduledExecutor()}public ThreadPoolExecutor getThreadPoolExecutor() {return mThreadPoolExecutor;}/*** 线程池忙*/public boolean isBusy() {return mThreadPoolExecutor.getActiveCount() mThreadPoolExecutor.getCorePoolSize();}/*** 线程池超载*/public boolean isFull() {return mThreadPoolExecutor.getActiveCount() mThreadPoolExecutor.getCorePoolSize() * 2;}public boolean isShutdown(){return mThreadPoolExecutor.isShutdown();}Overridepublic void execute(final Runnable r) {mThreadPoolExecutor.execute(r);} 二 根据接口定制业务场景的线程池接口 接下来我们就开始根据开放的接口来根据不同的业务需要来配置自己的线程池 final class TaskProxy extends TaskResultType {private final TaskResultType task;private Executor executor;/*package*/ static final InternalHandler INTERNAL_HANDLER new InternalHandler();static TaskPriorityExecutor sDefaultExecutor new TaskPriorityExecutor();static TaskPriorityExecutor sSearchExecutor null;static TaskPriorityExecutor sNetExecutor null;static TaskPriorityExecutor sAE8EngineExecutor null;static TaskPriorityExecutor sUDiskExecutor null;static TaskPriorityExecutor sTtsInitializeExecutor null;static TaskPriorityExecutor sSyncSdkIOHandleExecutor null;static TaskPriorityExecutor sAdapterExecutor null;static TaskPriorityExecutor sLoggerExecutor null;static TaskPriorityExecutor sActivateLogExecutor null;private ResultType result;private Throwable exception;private CancelledException cancelledException;/*package*/ TaskProxy(TaskResultType task) {if (task null) {throw new IllegalArgumentException(task must not be null);}this.task task;this.executor task.getExecutor();if (this.executor null) {this.executor sDefaultExecutor;}}public static synchronized TaskPriorityExecutor getExecute(TaskExector type){if (TaskExector.DEFALUT.equals(type)) {if (sDefaultExecutor null || sDefaultExecutor.isShutdown()){sDefaultExecutor new TaskPriorityExecutor(4, new TaskThreadFactory(Default));}return sDefaultExecutor;}else if(TaskExector.SEARCH.equals(type)) {if (sSearchExecutor null || sSearchExecutor.isShutdown()){sSearchExecutor new TaskPriorityExecutor(2, new TaskThreadFactory(Search));}return sSearchExecutor;} else if (TaskExector.NET_WORK.equals(type)){if (sNetExecutor null || sNetExecutor.isShutdown()){sNetExecutor new TaskPriorityExecutor(1, new TaskThreadFactory(Net));}return sNetExecutor;} else if (TaskExector.AE8_ENGINE.equals(type)){if (sAE8EngineExecutor null || sAE8EngineExecutor.isShutdown()){sAE8EngineExecutor new TaskPriorityExecutor(1, new TaskThreadFactory(AE8_Engine));}return sAE8EngineExecutor;} else if (TaskExector.UDISK_DOWNLOAD.equals(type)){if (sUDiskExecutor null || sUDiskExecutor.isShutdown()){sUDiskExecutor new TaskPriorityExecutor(1, new TaskThreadFactory(UDISK_DOWNLOAD));}return sUDiskExecutor;} else if (TaskExector.SYNC_SDK_IO.equals(type)) {if (sSyncSdkIOHandleExecutor null || sSyncSdkIOHandleExecutor.isShutdown()) {sSyncSdkIOHandleExecutor new TaskPriorityExecutor(1, new TaskThreadFactory(SYNC_SDK_IO_HANDLE));}return sSyncSdkIOHandleExecutor;} else if (TaskExector.USER_BL.equals(type)) {if (sSyncSdkIOHandleExecutor null || sSyncSdkIOHandleExecutor.isShutdown()) {sSyncSdkIOHandleExecutor new TaskPriorityExecutor(1, new TaskThreadFactory(USER_BL));}return sSyncSdkIOHandleExecutor;}else if (TaskExector.ADAPTER.equals(type)) {if (sAdapterExecutor null || sAdapterExecutor.isShutdown()) {sAdapterExecutor new TaskPriorityExecutor(1, new TaskThreadFactory(ADAPTER));}return sAdapterExecutor;} // else if (TaskExector.LOGGER.equals(type)) { // if (sLoggerExecutor null || sLoggerExecutor.isShutdown()) { // //日志问题出于时序考虑只能单线程模型进行执行 // sLoggerExecutor new TaskPriorityExecutor(new TaskThreadFactory(LOGGER)); // } // return sLoggerExecutor; // }else if (TaskExector.ACTIVATE_LOG.equals(type)) {if (sActivateLogExecutor null || sActivateLogExecutor.isShutdown()) {//日志问题出于时序考虑只能单线程模型进行执行sActivateLogExecutor new TaskPriorityExecutor(new TaskThreadFactory(ACTIVATE_LOG));}return sActivateLogExecutor;}return sDefaultExecutor;}public synchronized static void shutDown(TaskExector type){Logger.d(byron, [TaskProxy] shutDown: type);if (TaskExector.SEARCH.equals(type)) {if (sSearchExecutor ! null){sSearchExecutor.getThreadPoolExecutor().shutdown();sSearchExecutor null;}} else if (TaskExector.NET_WORK.equals(type)){if (sNetExecutor ! null){sNetExecutor.getThreadPoolExecutor().shutdown();sNetExecutor null;}} else if (TaskExector.AE8_ENGINE.equals(type)){if (sAE8EngineExecutor ! null){sAE8EngineExecutor.getThreadPoolExecutor().shutdown();sAE8EngineExecutor null;}} else if (TaskExector.UDISK_DOWNLOAD.equals(type)){if (sUDiskExecutor ! null){sUDiskExecutor.getThreadPoolExecutor().shutdown();sUDiskExecutor null;}} else if (TaskExector.SYNC_SDK_IO.equals(type)) {if (sSyncSdkIOHandleExecutor ! null) {sSyncSdkIOHandleExecutor.getThreadPoolExecutor().shutdown();sSyncSdkIOHandleExecutor null;}} else if (TaskExector.USER_BL.equals(type)) {if (sSyncSdkIOHandleExecutor ! null) {sSyncSdkIOHandleExecutor.getThreadPoolExecutor().shutdown();sSyncSdkIOHandleExecutor null;}}else if (TaskExector.ADAPTER.equals(type)) {if (sAdapterExecutor ! null) {sAdapterExecutor.getThreadPoolExecutor().shutdown();sAdapterExecutor null;}} // else if (TaskExector.LOGGER.equals(type)) { // if (sLoggerExecutor ! null) { // sLoggerExecutor.getThreadPoolExecutor().shutdown(); // sLoggerExecutor null; // } // }else if (TaskExector.ACTIVATE_LOG.equals(type)) {if (sActivateLogExecutor ! null) {sActivateLogExecutor.getThreadPoolExecutor().shutdown();sActivateLogExecutor null;}}}public static void onDestory(){Logger.d(byron, [TaskProxy] onDestory);if(INTERNAL_HANDLER ! null){INTERNAL_HANDLER.removeCallbacksAndMessages(null);}}Overrideprotected ResultType doBackground() throws Exception {this.setState(State.Waiting);TaskPriorityRunnable runnable new TaskPriorityRunnable(task.getPriority(),null,new Runnable() {Overridepublic void run() {try {Logger.d(proxy, taskProxy 1);// trace_start runningTaskProxy.this.setState(State.Running);TaskProxy.this.onStart();result task.doBackground();if (TaskProxy.this.state.get() State.Cancelled) { // 没有在doBackground过程中取消成功Logger.d(proxy, taskProxy 1 cancelled);throw new CancelledException();}TaskProxy.this.setState(State.Finished);TaskProxy.this.onFinished(result);} catch (CancelledException cex) {Logger.d(proxy, taskProxy e1 {?}, cex);TaskProxy.this.setState(State.Cancelled);TaskProxy.this.onCancelled(cex);} catch (Throwable ex) {Logger.d(proxy, taskProxy e2 {?}, ex);TaskProxy.this.setState(State.Error);TaskProxy.this.onError(ex, false);}}});this.executor.execute(runnable);return null;}Overrideprotected void onFinished(ResultType result) {INTERNAL_HANDLER.obtainMessage(MSG_WHAT_ON_FINISH, this).sendToTarget();}Overrideprotected void onError(Throwable ex, boolean isCallbackError) {exception ex;INTERNAL_HANDLER.obtainMessage(MSG_WHAT_ON_ERROR, this).sendToTarget();}Overrideprotected void onStart() {INTERNAL_HANDLER.obtainMessage(MSG_WHAT_ON_START, this).sendToTarget();}Overrideprotected void onUpdate(int flag, Object... args) {INTERNAL_HANDLER.obtainMessage(MSG_WHAT_ON_UPDATE, flag, 0, new ArgsObj(this, args)).sendToTarget();}Overrideprotected void onCancelled(CancelledException cex) {cancelledException cex;INTERNAL_HANDLER.obtainMessage(MSG_WHAT_ON_CANCEL, this).sendToTarget();}private void setState(State state) {this.state.set(state);this.task.state.set(state);}Overridepublic TaskPriority getPriority() {return task.getPriority();}Overridepublic Executor getExecutor() {return task.getExecutor();}// ########################### inner type #############################private static class ArgsObj {TaskProxy taskProxy;Object[] args;public ArgsObj(TaskProxy taskProxy, Object[] args) {this.taskProxy taskProxy;this.args args;}}private final static int MSG_WHAT_ON_START 1;private final static int MSG_WHAT_ON_FINISH 2;private final static int MSG_WHAT_ON_ERROR 3;private final static int MSG_WHAT_ON_UPDATE 4;private final static int MSG_WHAT_ON_CANCEL 5;/*package*/ final static class InternalHandler extends Handler {private InternalHandler() {super(Looper.getMainLooper());}SuppressWarnings(unchecked)Overridepublic void handleMessage(Message msg) {if (msg.obj null) {throw new IllegalArgumentException(msg must not be null);}TaskProxy taskProxy null;Object[] args null;if (msg.obj instanceof TaskProxy) {taskProxy (TaskProxy) msg.obj;} else if (msg.obj instanceof ArgsObj) {ArgsObj argsObj (ArgsObj) msg.obj;taskProxy argsObj.taskProxy;args argsObj.args;}if (taskProxy null) {throw new RuntimeException(msg.obj not instanceof TaskProxy);}try {switch (msg.what) {case MSG_WHAT_ON_START: {taskProxy.task.onStart();break;}case MSG_WHAT_ON_FINISH: {taskProxy.task.onFinished(taskProxy.result);break;}case MSG_WHAT_ON_ERROR: {try {taskProxy.task.onError(taskProxy.exception, false);} catch (Throwable ignored) {}break;}case MSG_WHAT_ON_UPDATE: {taskProxy.task.onUpdate(msg.arg1, args);break;}case MSG_WHAT_ON_CANCEL: {taskProxy.task.onCancelled(taskProxy.cancelledException);break;}default: {break;}}} catch (Throwable ex) {taskProxy.setState(State.Error);if (msg.what ! MSG_WHAT_ON_ERROR) {taskProxy.task.onError(ex, true);} else {ex.printStackTrace();}}}} } 这里是包含优先级的线程对应的基类可以通过线程工厂类 创建一个优先级的线程类 /*** 任务线程优先级*/ public class TaskPriorityRunnable implements Runnable {public final TaskPriority priority;private final Runnable runnable;private String name;private String oldThreadName;public TaskPriorityRunnable(TaskPriority priority, String name, Runnable runnable) {this.priority priority null ? TaskPriority.DEFAULT : priority;this.runnable runnable;this.name name null ? null : new StringBuilder().append(Executor#).append(name).toString();}Overridepublic final void run() {// run会进来多次防止多次设置线程名称引起问题故添加对name、oldThreadName判空判断if (!TextUtils.isEmpty(name) TextUtils.isEmpty(oldThreadName)){oldThreadName Thread.currentThread().getName();Thread.currentThread().setName(name);}this.runnable.run();// oldThreadName不为空时才进入设置线程名称if (!TextUtils.isEmpty(oldThreadName)){Thread.currentThread().setName(oldThreadName);oldThreadName null;}} }三其他相关类 这里面还有一些业务类的封装这里就不再一一贴出来了如有人需要可以整个贴出来 public abstract class TaskResultType {/*package*/ final AtomicReferenceState state new AtomicReference(State.Null);/*package*/ TaskProxy taskProxy null;protected abstract ResultType doBackground() throws Exception;protected abstract void onFinished(ResultType result);protected abstract void onError(Throwable ex, boolean isCallbackError);protected void onStart() {}protected void onUpdate(int flag, Object... args) {}protected void onCancelled(CancelledException cex) {}public final void update(int flag, Object... args) {if (taskProxy ! null) {taskProxy.onUpdate(flag, args);}}public final void cancel() {this.state.set(State.Cancelled);if (taskProxy ! null) {taskProxy.cancel();}}public final State getState() {return state.get();}public final boolean isStopped() {return this.state.get().value() State.Running.value();}public TaskPriority getPriority() {return null;}public Executor getExecutor() {return null;}public static class CancelledException extends RuntimeException {public CancelledException(String detailMessage) {super(detailMessage);}}public static enum State {Null(0), Waiting(1), Running(2), Finished(3), Cancelled(4), Error(5);private final int value;private State(int value) {this.value value;}public int value() {return value;}} }
http://www.dnsts.com.cn/news/196803.html

相关文章:

  • 设计一个企业网站多少钱高德地图无目的地导航
  • 即墨专业医院网站制作公司手机网站建设进度
  • 学校局域网站建设阿里云主机价格表
  • 网站建设的一些销售技巧dw个人网页设计
  • t恤定制网站网站内链检查
  • 网站视频播放代码wordpress5 源码
  • 自响应式网站建设清单上海网站建设排行
  • 个人如何做短视频网站高校宣传网站建设
  • 网站后台用户名什么是搜索推广
  • 阿里云服务器添加网站个人网站设计结构图
  • 怎样用FW做网站的首页互联网时代 网站建设
  • 天津商城网站设计公司用深度liunx做网站
  • 简述php网站开发流程图网站做seo推广 s
  • 网站如何做路由器温州网站设计服务商
  • 设计一个企业网站报价中国最新军事新闻
  • 如何搭建一个网站步骤网站制作毕业设计
  • vps搭建网站需要空间赣州信息港官网
  • 如何做网签合同 网站银饰品网站建设规划策划书
  • 怎么做网站用于推广低代码开发工具
  • 网站竞价开户牡丹江市广告公司
  • 网站建设个人博客新闻软文发布平台
  • 佛山制作网站公司吗江苏广泽建设有限公司网站
  • 公司建网站会计分录八爪鱼采集器 wordpress
  • 微网站素材传奇
  • 网站开发技术和seo的联系经典营销案例100例
  • 毕业季网站如何做网页中国高清vpswindows在线
  • 网站设计稿尺寸资料库网站开发报价
  • 网站建设 广州做网站软件下载
  • 导购类网站建设多少钱wordpress4.9.4源码
  • 网站的建站方案长春网站开发培训价格