/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.joyplus.joylink.Utils; public class ThreadPool { private static final String TAG = "ThreadPool"; private static final int CORE_POOL_SIZE = 4; private static final int MAX_POOL_SIZE = 8; private static final int KEEP_ALIVE_TIME = 10; // 10 seconds // Resource type public static final int MODE_NONE = 0; public static final int MODE_CPU = 1; public static final int MODE_NETWORK = 2; public static final JobContext JOB_CONTEXT_STUB = new JobContextStub(); ResourceCounter mCpuCounter = new ResourceCounter(2); ResourceCounter mNetworkCounter = new ResourceCounter(2); // A Job is like a Callable, but it has an addition JobContext parameter. public interface Job<T> { public T run(JobContext jc); } public interface JobContext { boolean isCancelled(); void setCancelListener(CancelListener listener); boolean setMode(int mode); } private static class JobContextStub implements JobContext { @Override public boolean isCancelled() { return false; } @Override public void setCancelListener(CancelListener listener) { } @Override public boolean setMode(int mode) { return true; } } public interface CancelListener { public void onCancel(); } private static class ResourceCounter { public int value; public ResourceCounter(int v) { value = v; } } }