1 // Copyright (C) 2006 Philip Aston 2 // All rights reserved. 3 // 4 // This file is part of The Grinder software distribution. Refer to 5 // the file LICENSE which is part of The Grinder distribution for 6 // licensing details. The Grinder distribution is available on the 7 // Internet at http://grinder.sourceforge.net/ 8 // 9 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 // OF THE POSSIBILITY OF SUCH DAMAGE. 21 22 package net.grinder.util.thread; 23 24 import net.grinder.common.UncheckedInterruptedException; 25 26 27 /** 28 * Adapt a {@link InterruptibleRunnable} to a {@link Runnable}. 29 * 30 * <p> 31 * {@link #run()} exits quietly if an {UncheckedInterruptedException} is thrown 32 * from the delegate. 33 * </p> 34 * 35 * @author Philip Aston 36 */ 37 public final class InterruptibleRunnableAdapter implements Runnable { 38 39 private final InterruptibleRunnable m_interuptibleRunnable; 40 41 /** 42 * Constructor for InterruptibleRunnableAdapter. 43 * 44 * @param interruptibleRunnable The delegate. 45 */ 46 public InterruptibleRunnableAdapter( 47 InterruptibleRunnable interruptibleRunnable) { 48 49 m_interuptibleRunnable = interruptibleRunnable; 50 } 51 52 53 /** 54 * Implement {@link Runnable}. 55 */ 56 public void run() { 57 try { 58 m_interuptibleRunnable.interruptibleRun(); 59 } 60 catch (UncheckedInterruptedException e) { 61 // Ignore, and exit quietly. 62 } 63 } 64 }