InterruptMonitor
Inheritance: java.lang.Object
All Implemented Interfaces: com.aspose.imaging.multithreading.IInterruptMonitor
public class InterruptMonitor implements IInterruptMonitor
Representa información sobre la interrupción.
Constructores
| Constructor | Descripción |
|---|---|
| InterruptMonitor() | Inicializa una nueva instancia de la clase InterruptMonitor. |
Métodos
| Método | Descripción |
|---|---|
| getThreadLocalInstance() | Obtiene la instancia IInterruptMonitor que es única para cada hilo. |
| setThreadLocalInstance(IInterruptMonitor value) | Establece la instancia IInterruptMonitor que es única para cada hilo. |
| isThreadInterrupted() | Devuelve true si el monitor de interrupción para el hilo actual existe y fue interrumpido; de lo contrario, false. |
| removeAllMonitors() | Elimina todos los monitores de hilos, incluidos los de los hilos activos. |
| isInterrupted() | Obtiene el valor que indica si las operaciones deben ser interrumpidas. |
| interrupt() | Envía una solicitud para interrumpir operaciones. |
Example: The following example shows how to interrupt the long process of image conversion.
/**
* <p>This is helper class which initiates image conversion and waits for its interruption.</p>
*/
class Worker implements Runnable {
/**
* The path to the input image.
*/
private final String inputPath;
/**
* The path to the output image.
*/
private final String outputPath;
/**
* The save options.
*/
private final com.aspose.imaging.ImageOptionsBase saveOptions;
/**
* The interrupt monitor.
*/
private final com.aspose.imaging.multithreading.InterruptMonitor monitor;
/**
* <p>Initializes a new instance of the {#link #Worker} class.</p>
*
* @param inputPath The path to the input image.
* @param outputPath The path to the output image.
* @param saveOptions The save options.
* @param monitor The interrupt monitor.
*/
public Worker(String inputPath, String outputPath, com.aspose.imaging.ImageOptionsBase saveOptions, com.aspose.imaging.multithreading.InterruptMonitor monitor) {
this.inputPath = inputPath;
this.outputPath = outputPath;
this.saveOptions = saveOptions;
this.monitor = monitor;
}
/**
* <p>Converts an image from one format to another. Handles interruption.</p>
*/
public void run() {
try {
com.aspose.imaging.Image image = com.aspose.imaging.Image.load(this.inputPath);
// Establece una instancia local al hilo del monitor de interrupción.
com.aspose.imaging.multithreading.InterruptMonitor.setThreadLocalInstance(this.monitor);
try {
image.save(this.outputPath, this.saveOptions);
} catch (com.aspose.imaging.coreexceptions.OperationInterruptedException e) {
System.out.printf(
"The worker thread #%s has been interrupted at %s\r\n",
java.lang.Thread.currentThread().getId(),
new java.util.Date());
} finally {
image.dispose();
// Restablece la instancia local al hilo del monitor de interrupción.
com.aspose.imaging.multithreading.InterruptMonitor.setThreadLocalInstance(null);
}
} catch (java.lang.Exception e) {
// Imprime información detallada sobre cualquier excepción inesperada.
System.out.println(e);
}
}
}
// Aquí está el ejemplo principal que usa la clase Worker.
String baseDir = "c:\\temp\\";
com.aspose.imaging.multithreading.InterruptMonitor monitor = new com.aspose.imaging.multithreading.InterruptMonitor();
Worker worker = new Worker(baseDir + "big.png", baseDir + "big.bmp", new com.aspose.imaging.imageoptions.BmpOptions(), monitor);
// Inicia el trabajador en un hilo dedicado.
Thread thread = new Thread(worker);
thread.start();
try {
// Realiza algún trabajo significativo aquí
Thread.sleep(2000);
// Solicitar interrumpir el hilo del trabajador
monitor.interrupt();
System.out.printf("Interrupting the worker thread #%s at %s", thread.getId(), new java.util.Date());
// Esperar a la interrupción.
thread.join();
} catch (InterruptedException e) {
System.out.println(e);
}
System.out.println("Done. Press ENTER to exit.");
System.in.read();
// La salida puede verse así:
// Interrumpiendo el hilo de trabajo #11 a las Tue Aug 06 17:57:52 YEKT 2019
// El hilo de trabajo #11 ha sido interrumpido a las Tue Aug 06 17:57:59 YEKT 2019
// Hecho. Presione ENTER para salir.
InterruptMonitor()
public InterruptMonitor()
Inicializa una nueva instancia de la clase InterruptMonitor.
getThreadLocalInstance()
public static IInterruptMonitor getThreadLocalInstance()
Obtiene la instancia IInterruptMonitor que es única para cada hilo.
Returns: IInterruptMonitor
setThreadLocalInstance(IInterruptMonitor value)
public static void setThreadLocalInstance(IInterruptMonitor value)
Establece la instancia IInterruptMonitor que es única para cada hilo.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| value | IInterruptMonitor |
isThreadInterrupted()
public static boolean isThreadInterrupted()
Devuelve true si el monitor de interrupción para el hilo actual existe y fue interrumpido; de lo contrario, false.
Returns:
boolean - true si el monitor de interrupción para el hilo actual existe y fue interrumpido, de lo contrario false.
removeAllMonitors()
public static void removeAllMonitors()
Elimina todos los monitores de hilos, incluidos los de los hilos activos.
isInterrupted()
public boolean isInterrupted()
Obtiene el valor que indica si las operaciones deben ser interrumpidas.
Returns: boolean
interrupt()
public void interrupt()
Envía una solicitud para interrumpir operaciones.
Example: The following example shows how to interrupt the long process of image conversion.
/**
* <p>This is helper class which initiates image conversion and waits for its interruption.</p>
*/
class Worker implements Runnable {
/**
* The path to the input image.
*/
private final String inputPath;
/**
* The path to the output image.
*/
private final String outputPath;
/**
* The save options.
*/
private final com.aspose.imaging.ImageOptionsBase saveOptions;
/**
* The interrupt monitor.
*/
private final com.aspose.imaging.multithreading.InterruptMonitor monitor;
/**
* <p>Initializes a new instance of the {#link #Worker} class.</p>
*
* @param inputPath The path to the input image.
* @param outputPath The path to the output image.
* @param saveOptions The save options.
* @param monitor The interrupt monitor.
*/
public Worker(String inputPath, String outputPath, com.aspose.imaging.ImageOptionsBase saveOptions, com.aspose.imaging.multithreading.InterruptMonitor monitor) {
this.inputPath = inputPath;
this.outputPath = outputPath;
this.saveOptions = saveOptions;
this.monitor = monitor;
}
/**
* <p>Converts an image from one format to another. Handles interruption.</p>
*/
public void run() {
try {
com.aspose.imaging.Image image = com.aspose.imaging.Image.load(this.inputPath);
// Establece una instancia local al hilo del monitor de interrupción.
com.aspose.imaging.multithreading.InterruptMonitor.setThreadLocalInstance(this.monitor);
try {
image.save(this.outputPath, this.saveOptions);
} catch (com.aspose.imaging.coreexceptions.OperationInterruptedException e) {
System.out.printf(
"The worker thread #%s has been interrupted at %s\r\n",
java.lang.Thread.currentThread().getId(),
new java.util.Date());
} finally {
image.dispose();
// Restablece la instancia local al hilo del monitor de interrupción.
com.aspose.imaging.multithreading.InterruptMonitor.setThreadLocalInstance(null);
}
} catch (java.lang.Exception e) {
// Imprime información detallada sobre cualquier excepción inesperada.
System.out.println(e);
}
}
}
// Aquí está el ejemplo principal que usa la clase Worker.
String baseDir = "c:\\temp\\";
com.aspose.imaging.multithreading.InterruptMonitor monitor = new com.aspose.imaging.multithreading.InterruptMonitor();
Worker worker = new Worker(baseDir + "big.png", baseDir + "big.bmp", new com.aspose.imaging.imageoptions.BmpOptions(), monitor);
// Inicia el trabajador en un hilo dedicado.
Thread thread = new Thread(worker);
thread.start();
try {
// Realiza algún trabajo significativo aquí
Thread.sleep(2000);
// Solicitar interrumpir el hilo del trabajador
monitor.interrupt();
System.out.printf("Interrupting the worker thread #%s at %s", thread.getId(), new java.util.Date());
// Esperar a la interrupción.
thread.join();
} catch (InterruptedException e) {
System.out.println(e);
}
System.out.println("Done. Press ENTER to exit.");
System.in.read();
// La salida puede verse así:
// Interrumpiendo el hilo de trabajo #11 a las Tue Aug 06 17:57:52 YEKT 2019
// El hilo de trabajo #11 ha sido interrumpido a las Tue Aug 06 17:57:59 YEKT 2019
// Hecho. Presione ENTER para salir.