Sample code for 30+ languages & platforms
Android™

Thread Pool Size

See more Async Examples

Demonstrates how to set the maximum number of threads in Chilkat's thread pool manager. Also demonstrates how to set a thread pool log file for help in diagnosing unexpected problems.

Chilkat Android™ Downloads

Android™
// Important: Don't forget to include the call to System.loadLibrary
// as shown at the bottom of this code sample.
package com.test;

import android.app.Activity;
import com.chilkatsoft.*;

import android.widget.TextView;
import android.os.Bundle;

public class SimpleActivity extends Activity {

  private static final String TAG = "Chilkat";

  // Called when the activity is first created.
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    boolean success = false;

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    success = false;

    // Set the maximum number of threads in the Chilkat thread pool to 12.
    // This means that no more than 12 background worker threads will exist simultaneously.
    // If more than 12 tasks are queued then some must wait for a worker thread to become free.
    // Note: The Chilkat thread pool manager thread is a thread distinct from the
    // worker threads.  It starts when the 1st asynchronous task is Run. 
    CkGlobal glob = new CkGlobal();
    glob.put_MaxThreads(12);

    // Also, the ThreadPoolLogPath can be set to cause the thread pool manager thread to
    // keep a log file. This is for the purpose of debugging if unexpected problems occur.
    glob.put_ThreadPoolLogPath("/home/users/chilkat/logs/threadPoolLog.txt");

    CkHttp http1 = new CkHttp();
    CkHttp http2 = new CkHttp();
    CkHttp http3 = new CkHttp();

    String url1 = "http://www.marcusmiller.com/";
    String url2 = "http://www.tromboneshorty.com/";
    String url3 = "http://www.jamesmorrison.com/";

    // Call the async version of the QuickGetStr method to return a task object.
    // The task object is loaded, but is in the Inert state -- meaning it is
    // not yet scheduled to run on Chilkat's background thread pool.
    CkTask task1 = http1.QuickGetStrAsync(url1);
    if (http1.get_LastMethodSuccess() == false) {
        Log.i(TAG, http1.lastErrorText());
        return;
        }

    CkTask task2 = http2.QuickGetStrAsync(url2);
    if (http2.get_LastMethodSuccess() == false) {
        Log.i(TAG, http2.lastErrorText());

        return;
        }

    CkTask task3 = http3.QuickGetStrAsync(url3);
    if (http3.get_LastMethodSuccess() == false) {
        Log.i(TAG, http3.lastErrorText());

        return;
        }

    // At this point we have 3 task objects, each loaded with a Chilkat method call.
    // Note: At this point no background threads are running.  The thread pool manager
    // thread is not started -- it will start when the very first task is Run.

    // Schedule each task for running on the thread pool.  This changes each task's state
    // from Inert to Live. The thread pool manager thread starts with the 1st task queued.
    // If the Global.ThreadPoolLogPath property was set, then
    // the log file would be created (or appended) at this point.
    success = task1.Run();
    // Assuming success for brevity...
    success = task2.Run();
    success = task3.Run();

    // The application is now free to do anything else
    // while the HTML at the URL's are being downloaded in background threads.

    // In this case, we'll just wait for all three tasks to finish.
    // All three tasks are running simultaneously in separate background threads.
    // We can wait for each in any order.  If Wait is called and the task has already
    // finished (or been canceled), then the Wait method returns immediately.
    int maxWaitMs = 20000;
    success = task1.Wait(maxWaitMs);
    success = task2.Wait(maxWaitMs);
    success = task3.Wait(maxWaitMs);
    // Assuming success for brevity...

    String err = "Task failed or canceled";
    String html1 = err;
    String html2 = err;
    String html3 = err;

    // Now get the HTML downloaded in each task:
    if ((task1.get_StatusInt() == 7) and (task1.get_TaskSuccess() == true)) {
        html1 = task1.getResultString();
        }

    if ((task2.get_StatusInt() == 7) and (task2.get_TaskSuccess() == true)) {
        html2 = task2.getResultString();
        }

    if ((task3.get_StatusInt() == 7) and (task3.get_TaskSuccess() == true)) {
        html3 = task3.getResultString();
        }

    Log.i(TAG, html1);
    Log.i(TAG, "----");
    Log.i(TAG, html2);
    Log.i(TAG, "----");
    Log.i(TAG, html3);
    Log.i(TAG, "----");


  }

  static {
      System.loadLibrary("chilkat");

      // Note: If the incorrect library name is passed to System.loadLibrary,
      // then you will see the following error message at application startup:
      //"The application <your-application-name> has stopped unexpectedly. Please try again."
  }
}