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

自己做网站有什么用做网站需要会什么编程

自己做网站有什么用,做网站需要会什么编程,免费ppt课件模板大全,尤溪建设局网站多线程线程池的实现java线程是独立程序的执行路径。 在java中#xff0c;每个线程都扩展java.lang.Thread类或实现java.lang.Runnable。 多线程是指在一个任务中同时执行两个或多个线程。在多线程中#xff0c;每个任务可以有多个线程#xff0c;并且这些线程可以异步或同步… 多线程线程池的实现java 线程是独立程序的执行路径。 在java中每个线程都扩展java.lang.Thread类或实现java.lang.Runnable。 多线程是指在一个任务中同时执行两个或多个线程。在多线程中每个任务可以有多个线程并且这些线程可以异步或同步地并行运行。 您可以在我在此处撰写的另一篇有关多线程的教程中找到有关线程和多线程的更多信息。 1.什么是线程池 线程池代表一组执行任务的工作线程每个线程可以多次重用。 如果在所有线程都处于活动状态时提交了新任务则它们将在队列中等待直到某个线程可用为止。 线程池实现在内部使用LinkedBlockingQueue在队列中添加和删除任务。 我们通常想要的是一个工作队列该队列与一组固定的工作线程组合在一起该工作线程使用wait()和notify()来向等待线程发出新工作到达的信号。 以下示例显示了一个简单的工作队列该队列是Runnable对象的队列。 尽管没有特别要求Thread API使用Runnable接口但这是调度程序和工作队列的通用约定。 package tutorials;import java.util.concurrent.LinkedBlockingQueue;public class ThreadPool {private final int nThreads;private final PoolWorker[] threads;private final LinkedBlockingQueue queue;public ThreadPool(int nThreads) {this.nThreads nThreads;queue new LinkedBlockingQueue();threads new PoolWorker[nThreads];for (int i 0; i nThreads; i) {threads[i] new PoolWorker();threads[i].start();}}public void execute(Runnable task) {synchronized (queue) {queue.add(task);queue.notify();}}private class PoolWorker extends Thread {public void run() {Runnable task;while (true) {synchronized (queue) {while (queue.isEmpty()) {try {queue.wait();} catch (InterruptedException e) {System.out.println(An error occurred while queue is waiting: e.getMessage());}}task queue.poll();}// If we dont catch RuntimeException,// the pool could leak threadstry {task.run();} catch (RuntimeException e) {System.out.println(Thread pool is interrupted due to an issue: e.getMessage());}}}} } 在处理队列时使用同步块很重要以控制线程对队列的访问。 package tutorials;public class Task implements Runnable {private int num;public Task(int n) {num n;}public void run() {System.out.println(Task num is running.);} }import tutorials.Task; import tutorials.ThreadPool;public class Main {public static void main(String[] args) {ThreadPool pool new ThreadPool(7);for (int i 0; i 5; i) {Task task new Task(i);pool.execute(task);} } 在上面的示例中我们使用notify()而不是notifyAll() 。 因为notify()具有比notifyAll()更理想的性能特征 特别是 notify()导致更少的上下文切换这在服务器应用程序中很重要。 但是使用时要确保重要notify()在其他情况下因为与使用有关的微妙风险notify()它是唯一适当使用它在特定条件下。 下图演示了以上示例中的线程池设计。 图1。 线程池设计 2.有效使用线程池 线程池是一种用于构造多线程应用程序的强大机制但并非没有风险。 使用线程池构建的应用程序可能具有与任何其他多线程应用程序相同的并发风险例如死锁 资源崩溃同步或并发错误线程泄漏和请求重载 。 这里有几点 不要将同步等待其他任务的任务排入队列因为这会导致死锁。 如果任务需要等待诸如I / O之类的资源请指定最大等待时间然后使任务执行失败或重新排队。 这保证了通过释放线程执行可能成功完成的另一任务将取得一些进展。 有效地调整线程池的大小并了解线程太少或线程太多都会导致问题。 线程池的最佳大小取决于可用处理器的数量以及工作队列上任务的性质。 3.结论 线程池对于组织服务器应用程序很有用并且正确地实现它以防止任何问题例如死锁和wait()或notify()使用的复杂性非常重要。 因此建议考虑使用util.concurrent中的Executor类之一例如ThreadPoolExecutor 而不是从头开始编写线程池。 如果要求创建线程来处理短期任务则可以考虑使用线程池。 4.下载源代码 这是线程池的教程要下载源代码请单击此处 。 翻译自: https://www.javacodegeeks.com/2016/12/implement-thread-pool-java.html多线程线程池的实现java
http://www.pierceye.com/news/954918/

相关文章:

  • 网站开发费用摊销时间html5视频教程
  • 连连跨境电商网站开发山西省住房建设厅网站首页
  • 潍坊seo网站推广北京南站地铁线路图
  • 投资网站排行军事最新新闻播报
  • 梅州建设网站丰台网页设计公司
  • 短期网站建设培训学校网页建站价格
  • 偏门网站建设做的网站被挂马
  • 三五互联网站自己做一个网站需要什么
  • wordpress博客网站深圳建工集团
  • 罗永浩做的网站房产网站设计方案
  • 创建个人网站多少钱模板速成网站
  • 晋江做网站的公司哪家好企业网站报价
  • 百度权重查询网站旅游公司的网站怎么做
  • 品牌网站建设小蝌蚪2a西安中交建设集团网站
  • 潍坊网页网站制作优畅 wordpress
  • 搜狗收录网站网站制作费用预算表
  • dede网站安全长沙营销型
  • 那些做电影视频网站的赚钱吗邯郸网站建设方案
  • 在线做app的网站wordpress 产品分类
  • seo网站建设规划网站模板视频教程
  • 沈阳网站制作策划wordpress 文章页调用
  • 网站开发和网络工程师方法网站目录
  • 用dw做网站的好处网页美工培训中心
  • 中文域名注册 .网站网站英文地图怎么做
  • 汽车行业网站建设维护服务wordpress改投票系统
  • 网站快照长期不更新wordpress 顶部高度
  • 雨颜色网站建设电器类网站设计
  • 网站建设模块化实现企业网站建设范文
  • 网站培训班有哪些课程中国工程建设标准化协会官方网站
  • 医院网站建设 费用做商业网站