|  | // Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | package com.android.tools.r8.utils.threads; | 
|  |  | 
|  | import com.android.tools.r8.utils.Timing; | 
|  |  | 
|  | public interface ThreadTask { | 
|  |  | 
|  | void run(Timing timing) throws Exception; | 
|  |  | 
|  | default void runWithRuntimeException(Timing timing) { | 
|  | try { | 
|  | run(timing); | 
|  | } catch (Exception e) { | 
|  | throw new RuntimeException(e); | 
|  | } | 
|  | } | 
|  |  | 
|  | default void onJoin() {} | 
|  |  | 
|  | default boolean shouldRun() { | 
|  | return true; | 
|  | } | 
|  |  | 
|  | default boolean shouldRunOnThread() { | 
|  | return true; | 
|  | } | 
|  | } |