android 多线程网络模块实现

该多线程网络访问框架主要实现多线程并发以及线程的优先级控制。

首先给出该模块接口的调用示例:

//实例化访问模块
ThreadPage threadPage = new ThreadPage(Priority.PRIORITY_IDLE);
threadPage.setAutoDestory(true);
//注入一个实现runable接口的类,以及线程优先级
threadPage.execute(new userThread(), Priority.PRIORITY_NORM);
//ThreadPage中维护一个线程请求队列
private PriorityBlockingQueue<AsyncTask> priorityQueue;
priorityQueue = new PriorityBlockingQueue<AsyncTask>(200,new PriorityComparator());


将runnable接口实现注入队列时,实例化一个AsyncTask,AsycTask实现runnable接口,作为每一个运行线程的实例类。

threadpage主要用于维护一个线程队列,提供add,remove等方法。

在threadpage中继续实例化threadPool这个类,用于具体线程操作,并将theadpage注册。threadPool为这个带有优先级控制的多线程模块的核心类。threadPool类主要是基于ThreadPoolExecutor,此为java提供的一个线程池。thread pool一般被用来解决两个问题:当处理大量的同步task的时候,它能够避免thread不断创建销毁的开销;而另外一个也许更重要的含义是,它其实表示了一个boundary,通过使用thread pool可以限制这些任务所消耗的资源,比如最大线程数,比如最大的消息缓冲池。

theadpool做成一个单例模式,创建两个线程池,(ThreadPoolExecutor,其父类是ThreadPoolExecutor)并维护两个stack,分别为高优先级堆和低优先级堆。将创建的threadoage压入对应的stack当中。theadpool将实例化一个调度线程,其重现的run方法为整个线程池的调度控制的部分。

在具体的调度中,调度线程将不断的轮询。如有任务则执行任务,并短时间挂起轮询线程。否则挂起轮询线程,直至下次有任务唤醒。轮询线程总是要给一个短暂的挂起,防止出现抢占时间片的情形。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值