奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

java中的線程池實例代碼

時間:2025-05-02 14:56:54 志升 java語言 我要投稿
  • 相關推薦

java中通用的線程池實例代碼

  在日常學習、工作和生活中,大家對java都再熟悉不過了吧,下面是小編為大家整理的java中通用的線程池實例代碼,希望對大家有所幫助。

  復制代碼 代碼如下:

  package com.smart.frame.task.autoTask;

  import java.util.Collection;

  import java.util.Vector;

  /**

  * 任務分發器

  */

  public class TaskManage extends Thread

  {

  protected Vectortasks = new Vector();

  protected boolean running = false;

  protected boolean stopped = false;

  protected boolean paused = false;

  protected boolean killed = false;

  private ThreadPool pool;

  public TaskManage(ThreadPool pool)

  {

  this.pool = pool;

  }

  public void putTask(Runnable task)

  {

  tasks.add(task);

  }

  public void putTasks(Runnable[] tasks)

  {

  for (int i = 0; i < tasks.length; i++)

  this.tasks.add(tasks[i]);

  }

  public void putTasks(Collectiontasks)

  {

  this.tasks.addAll(tasks);

  }

  protected Runnable popTask()

  {

  if (tasks.sixx() > 0) return (Runnable) tasks.remove(0);

  else return null;

  }

  public boolean isRunning()

  {

  return running;

  }

  public void stopTasks()

  {

  stopped = true;

  }

  public void stopTasksSync()

  {

  stopTasks();

  while (isRunning())

  {

  try

  {

  sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  }

  }

  }

  public void pauseTasks()

  {

  paused = true;

  }

  public void pauseTasksSync()

  {

  pauseTasks();

  while (isRunning())

  {

  try

  {

  sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  }

  }

  }

  public void kill()

  {

  if (!running) interrupt();

  else killed = true;

  }

  public void killSync()

  {

  kill();

  while (isAlive())

  {

  try

  {

  sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  }

  }

  }

  public synchronized void startTasks()

  {

  running = true;

  this.notify();

  }

  public synchronized void run()

  {

  try

  {

  while (true)

  {

  if (!running || tasks.si ze() = = 0)

  {

  pool.notifyForIdleThread();

  this.wait();

  }

  else

  {

  Runnable task;

  while ((task = popTask()) != null)

  {

  task.run();

  if (stopped)

  {

  stopped = false;

  if (tasks.sixx() > 0)

  {

  tasks.clear();

  System.out.println(Thread.currentThread().getId() + ": Tasks are stopped");

  break;

  }

  }

  if (paused)

  {

  paused = false;

  if (tasks.sixx() > 0)

  {

  System.out.println(Thread.currentThread().getId() + ": Tasks are paused");

  break;

  }

  }

  }

  running = false;

  }

  if (killed)

  {

  killed = false;

  break;

  }

  }

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  return;

  }

  }

  }

  復制代碼 代碼如下:

  package com.smart.frame.task.autoTask;

  import java.util.Collection;

  import java.util.Iterator;

  import java.util.Vector;

  /**

  * 線程池

  */

  public class ThreadPool

  {

  protected int maxPoolSize = TaskConfig.maxPoolSize;

  protected int initPoolSize = TaskConfig.initPoolSize;

  protected Vectorthreads = new Vector();

  protected boolean initialized = false;

  protected boolean hasIdleThread = false;

  public ThreadPool()

  {

  super();

  }

  public ThreadPool(int maxPoolSize, int initPoolSize)

  {

  this.maxPoolSize = maxPoolSize;

  this.initPoolSize = initPoolSize;

  }

  public void init()

  {

  initialized = true;

  for (int i = 0; i < initPoolSize; i++)

  {

  TaskManage thread = new TaskManage(this);

  thread.start();

  threads.add(thread);

  }

  }

  public void setMaxPoolSize(int maxPoolSize)

  {

  this.maxPoolSize = maxPoolSize;

  if (maxPoolSize < getPoolSize()) setPoolSize(maxPoolSize);

  }

  /**

  * 重設當前線程數 若需殺掉某線程,線程不會立刻殺掉,而會等到線程中的事

  * 務處理完成 但此方法會立刻從線程池中移除該線程,不會等待事務處理結束

  */

  public void setPoolSize(int size)

  {

  if (!initialized)

  {

  initPoolSize = size;

  return;

  }

  else if (size > getPoolSize())

  {

  for (int i = getPoolSize(); i < size && i < maxPoolSize; i++)

  {

  TaskManage thread = new TaskManage(this);

  thread.start();

  threads.add(thread);

  }

  }

  else if (size < getPoolSize())

  {

  while (getPoolSize() > size)

  {

  TaskManage th = (TaskManage) threads.remove(0);

  th.kill();

  }

  }

  }

  public int getPoolSize()

  {

  return threads.sixx();

  }

  protected void notifyForIdleThread()

  {

  hasIdleThread = true;

  }

  protected boolean waitForIdleThread()

  {

  hasIdleThread = false;

  while (!hasIdleThread && getPoolSize() >= maxPoolSize)

  {

  try

  {

  Thread.sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  return false;

  }

  }

  return true;

  }

  public synchronized TaskManage getIdleThread()

  {

  while (true)

  {

  for (Iteratoritr = threads.iterator(); itr.hasNext();)

  {

  TaskManage th = (TaskManage) itr.next();

  if (!th.isRunning()) return th;

  }

  if (getPoolSize() < maxPoolSize)

  {

  TaskManage thread = new TaskManage(this);

  thread.start();

  threads.add(thread);

  return thread;

  }

  if (waitForIdleThread() == false) return null;

  }

  }

  public void processTask(Runnable task)

  {

  TaskManage th = getIdleThread();

  if (th != null)

  {

  th.putTask(task);

  th.startTasks();

  }

  }

  public void processTasksInSingleThread(Runnable[] tasks)

  {

  TaskManage th = getIdleThread();

  if (th != null)

  {

  th.putTasks(tasks);

  th.startTasks();

  }

  }

  public void processTasksInSingleThread(Collectiontasks)

  {

  TaskManage th = getIdleThread();

  if (th != null)

  {

  th.putTasks(tasks);

  th.startTasks();

  }

  }

  }

  復制代碼 代碼如下:

  package com.smart.frame.task.autoTask;

  public class TopTask implements Runnable

  {

  private ThreadPool pool;

  public TopTask()

  {

  super();

  }

  public TopTask(ThreadPool pool)

  {

  super();

  this.pool = pool;

  }

  @Override

  public void run()

  {

  init();

  start();

  }

  /**

  * 初始化驗證權限、參數之類

  */

  public void init()

  {

  }

  /**

  * 開始自動任務

  */

  public void start()

  {

  for (int i = 0; i < 10; i++)

  {

  pool.processTask(new BeginAuto());

  }

  }

  }

  /**

  * 實現類

  */

  class BeginAuto implements Runnable

  {

  @Override

  public void run()

  {

  System.out.println(Thread.currentThread().getId() + "..................");

  }

  }

  復制代碼代碼如下:

  package com.smart.frame.task.autoTask;

  import java.util.Collection;

  import java.util.Vector;

  /**

  * 任務分發器

  */

  public class TaskManage extends Thread

  {

  protected Vector tasks = new Vector();

  protected boolean running = false;

  protected boolean stopped = false;

  protected boolean paused = false;

  protected boolean killed = false;

  private ThreadPool pool;

  public TaskManage(ThreadPool pool)

  {

  this.pool = pool;

  }

  public void putTask(Runnable task)

  {

  tasks.add(task);

  }

  public void putTasks(Runnable[] tasks)

  {

  for (int i = 0; i < tasks.length; i++)

  this.tasks.add(tasks[i]);

  }

  public void putTasks(Collection tasks)

  {

  this.tasks.addAll(tasks);

  }

  protected Runnable popTask()

  {

  if (tasks.sixx() > 0) return (Runnable) tasks.remove(0);

  else return null;

  }

  public boolean isRunning()

  {

  return running;

  }

  public void stopTasks()

  {

  stopped = true;

  }文章來源地址https://www.yii666.com/blog/74008.html

  public void stopTasksSync()

  {

  stopTasks();

  while (isRunning())

  {

  try

  {

  sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  }

  }

  }

  public void pauseTasks()

  {

  paused = true;

  }文章地址https://www.yii666.com/blog/74008.html

  public void pauseTasksSync()

  {

  pauseTasks();

  while (isRunning())

  {

  try

  {

  sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  }

  }

  }

  public void kill()

  {

  if (!running) interrupt();

  else killed = true;

  }

  public void killSync()

  {

  kill();

  while (isAlive())

  {

  try

  {

  sleep(5);

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  }

  }

  }

  public synchronized void startTasks()

  {

  running = true;

  this.notify();

  }

  public synchronized void run()

  {

  try

  {

  while (true)

  {

  if (!running || tasks.si ze () == 0)

  {

  pool.notifyForIdleThread();

  this.wait();

  }

  else

  {

  Runnable task;

  while ((task = popTask()) != null)

  {

  task.run();

  if (stopped)

  {

  stopped = false;

  if (tasks.sixx() > 0)

  {

  tasks.clear();

  System.out.println(Thread.currentThread().getId() + ": Tasks are stopped");

  break;

  }

  }

  if (paused)

  {

  paused = false;

  if (tasks.sixx() > 0)

  {

  System.out.println(Thread.currentThread().getId() + ": Tasks are paused");

  break;

  }

  }

  }

  running = false;

  }

  if (killed)

  {

  killed = false;

  break;

  }

  }

  }

  catch (InterruptedException e)

  {

  TaskException.getResultMessage(e);

  return;

  }

  }

  }

【java中的線程池實例代碼】相關文章:

Java實現在不同線程中運行的代碼實例詳解06-11

什么是java線程池框架03-12

Java 5線程池使用07-28

java線程池框架解析03-07

java線程池框架是什么01-11

java線程池框架解析方法05-04

java多線程-線程通信實例詳細解讀07-07

Java優先級線程代碼示例08-09

java多線程同步塊實例講解素材03-03

主站蜘蛛池模板: 谢通门县| 湟中县| 福建省| 万州区| 获嘉县| 崇阳县| 渭源县| 昌图县| 宜昌市| 昭平县| 策勒县| 昌江| 永和县| 井冈山市| 滦南县| 阿拉善左旗| 武川县| 墨江| 天长市| 哈巴河县| 宾川县| 吉林省| 会同县| 仁布县| 大厂| 江阴市| 罗田县| 遵义市| 乐都县| 岢岚县| 田林县| 关岭| 蒙阴县| 中宁县| 蓬莱市| 元朗区| 冀州市| 陕西省| 青冈县| 延庆县| 什邡市|