Class GlideExecutor

  • All Implemented Interfaces:
    java.util.concurrent.Executor, java.util.concurrent.ExecutorService

    public final class GlideExecutor
    extends java.lang.Object
    implements java.util.concurrent.ExecutorService
    A prioritized ThreadPoolExecutor for running jobs in Glide.
    • Method Detail

      • newAnimationBuilder

        public static GlideExecutor.Builder newAnimationBuilder()
        Returns a new fixed thread pool that defaults to either one or two threads depending on the number of available cores to use when loading frames of animations.

        Animation executors do not allow network operations on their threads.

      • execute

        public void execute​(@NonNull
                            java.lang.Runnable command)
        Specified by:
        execute in interface java.util.concurrent.Executor
      • submit

        @NonNull
        public java.util.concurrent.Future<?> submit​(@NonNull
                                                     java.lang.Runnable task)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService
      • invokeAll

        @NonNull
        public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll​(@NonNull
                                                                            java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                                                                     throws java.lang.InterruptedException
        Specified by:
        invokeAll in interface java.util.concurrent.ExecutorService
        Throws:
        java.lang.InterruptedException
      • invokeAll

        @NonNull
        public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll​(@NonNull
                                                                            java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                                                                            long timeout,
                                                                            @NonNull
                                                                            java.util.concurrent.TimeUnit unit)
                                                                     throws java.lang.InterruptedException
        Specified by:
        invokeAll in interface java.util.concurrent.ExecutorService
        Throws:
        java.lang.InterruptedException
      • invokeAny

        @NonNull
        public <T> T invokeAny​(@NonNull
                               java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                        throws java.lang.InterruptedException,
                               java.util.concurrent.ExecutionException
        Specified by:
        invokeAny in interface java.util.concurrent.ExecutorService
        Throws:
        java.lang.InterruptedException
        java.util.concurrent.ExecutionException
      • invokeAny

        public <T> T invokeAny​(@NonNull
                               java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                               long timeout,
                               @NonNull
                               java.util.concurrent.TimeUnit unit)
                        throws java.lang.InterruptedException,
                               java.util.concurrent.ExecutionException,
                               java.util.concurrent.TimeoutException
        Specified by:
        invokeAny in interface java.util.concurrent.ExecutorService
        Throws:
        java.lang.InterruptedException
        java.util.concurrent.ExecutionException
        java.util.concurrent.TimeoutException
      • submit

        @NonNull
        public <T> java.util.concurrent.Future<T> submit​(@NonNull
                                                         java.lang.Runnable task,
                                                         T result)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService
      • submit

        public <T> java.util.concurrent.Future<T> submit​(@NonNull
                                                         java.util.concurrent.Callable<T> task)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService
      • shutdown

        public void shutdown()
        Specified by:
        shutdown in interface java.util.concurrent.ExecutorService
      • shutdownNow

        @NonNull
        public java.util.List<java.lang.Runnable> shutdownNow()
        Specified by:
        shutdownNow in interface java.util.concurrent.ExecutorService
      • isShutdown

        public boolean isShutdown()
        Specified by:
        isShutdown in interface java.util.concurrent.ExecutorService
      • isTerminated

        public boolean isTerminated()
        Specified by:
        isTerminated in interface java.util.concurrent.ExecutorService
      • awaitTermination

        public boolean awaitTermination​(long timeout,
                                        @NonNull
                                        java.util.concurrent.TimeUnit unit)
                                 throws java.lang.InterruptedException
        Specified by:
        awaitTermination in interface java.util.concurrent.ExecutorService
        Throws:
        java.lang.InterruptedException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • calculateBestThreadCount

        public static int calculateBestThreadCount()
        Determines the number of cores available on the device.