El método tryTransfer() de la clase LinkedTransferQueue es una función incorporada en Java que generalmente se usa para transferir un elemento a un subproceso que está esperando recibirlo, si en caso de que no haya un subproceso esperando, terminará sin agregar elementos a la cola. o también puede hacer que espere cierta cantidad de tiempo pasando la cantidad de tiempo y sus unidades como parámetro a la función.
En la clase LinkedTransferQueue, hay dos tipos de métodos tryTransfer() según los parámetros que se le pasan.
TryTransfer (E e)
Generalmente se usa para transferir un elemento a un subproceso que está en estado de espera, si en caso de que no haya un subproceso en espera, terminará sin agregar el elemento a la cola
Sintaxis:
public boolean tryTransfer(E e)
Parámetro:
- Aquí E e es el elemento que se transferirá al hilo que está en estado de espera.
Valor devuelto: este método devolverá un valor booleano , es decir, verdadero si el elemento se transfirió, de lo contrario, falso.
Excepción : este método generará las siguientes excepciones.
- NullPointerException : si el elemento especificado es nulo
- InterruptedException : si se interrumpe mientras espera, en cuyo caso el elemento no se deja en la cola.
Los siguientes programas ilustran el método simple LinkedTransferQueue.tryTransfer() en Java:
Programa 1: Para ilustrar el método tryTransfer() en Java.
Java
// Java program to demonstrate // the tryTransfer() Method. import java.util.*; import java.util.concurrent.*; class GFG { public static void main(String args[]) { // creating an object // for class LinkedTransferQueue LinkedTransferQueue<String> g = new LinkedTransferQueue<String>(); new Thread(new Runnable() { public void run() { try { System.out.println("transferring an element"); // calling tryTransfer() method // to transfer the string g.tryTransfer("is a computer science portal."); System.out.println("element transfer is complete"); } catch (NullPointerException e2) { System.out.println(e2); System.exit(0); } } }).start(); try { // here the thread is waiting // to receive an element. System.out.println("Geeks for Geeks " + g.take()); } catch (Exception e) { System.out.println(e); } } }
transferring an element element transfer is complete Geeks for Geeks is a computer science portal.
Programa 2: NullPointerException.
Java
// Java program to demonstrate NullPointerException // thrown by the tryTransfer() Method. import java.util.*; import java.util.concurrent.*; class GFG { public static void main(String args[]) { // create a LinkedTransferQueue object LinkedTransferQueue<String> g = new LinkedTransferQueue<String>(); new Thread(new Runnable() { public void run() { try { System.out.println("transferring an element"); // calling tryTransfer() method // to transfer the null element g.tryTransfer(null); System.out.println("element transfer is complete"); } catch (NullPointerException e2) { System.out.println(e2); System.exit(0); } } }).start(); try { System.out.println("Geeks for Geeks " + g.take()); // here the thread is waiting // to receive an element. } catch (Exception e) { System.out.println(e); System.exit(0); } } }
transferring an element java.lang.NullPointerException
tryTransfer(E e, tiempo de espera largo, Unidad de tiempo)
Generalmente se usa para transferir un elemento a un subproceso que está en estado de espera, si en caso de que no haya un subproceso en espera, espera una cierta cantidad de tiempo pasando la cantidad de tiempo y sus unidades como parámetro a la función.
Sintaxis:
public boolean tryTransfer(E e, long timeout, TimeUnit)
Parámetro: Este método acepta tres parámetros obligatorios:
- Aquí E e es el elemento que se transferirá al hilo que está en estado de espera.
- Aquí tiempo de espera largo es el tiempo que especifica la cantidad de tiempo que debe esperar antes de terminar.
- Aquí , la unidad TimeUnit significa la unidad de tiempo de espera prolongado.
Valor de retorno: este método devolverá un valor booleano . Devuelve verdadero si el elemento fue transferido, de lo contrario, falso.
Excepción : este método generará las siguientes excepciones.
- NullPointerException : si el elemento especificado es nulo
- InterruptedException : si se interrumpe mientras espera, en cuyo caso el elemento no se deja en la cola.
Programa 1: Para ilustrar el método tryTransfer() en Java configurando la espera como su parámetro.
Java
// Java program to demonstrate // the tryTransfer() Method. import java.util.*; import java.util.concurrent.*; class GFG { public static void main(String args[]) { // creating an object for LinkedTransferQueue LinkedTransferQueue<String> g = new LinkedTransferQueue<String>(); new Thread(new Runnable() { public void run() { try { System.out.println("transferring an element"); // calling tryTransfer() method passing amount // of time and its units as the parameter // to the function and storing // its return value in a boolean variable. boolean a = g.tryTransfer( "is a computer science portal.", 2000, TimeUnit.MILLISECONDS); if (a) System.out.println("element transfer is complete"); else System.out.println("element is not transferred "); } catch (NullPointerException e2) { System.out.println(e2); } catch (InterruptedException e3) { System.out.println(e3); } } }).start(); try { // here thread is made inactive or sleep // for 2000 milliseconds Thread.sleep(2000); // here the thread is ready to receive System.out.println("Geeks for Geeks " + g.take()); } catch (Exception e) { System.out.println(e); } } }
transferring an element Geeks for Geeks is a computer science portal. element transfer is complete
Programa 2: NullPointerException.
Java
// Java program to demonstrate NullPointerException // thrown by the tryTransfer() Method. import java.util.*; import java.util.concurrent.*; class GFG { public static void main(String args[]) { // creating an object // for class LinkedTransferQueue LinkedTransferQueue<String> g = new LinkedTransferQueue<String>(); new Thread(new Runnable() { public void run() { try { System.out.println("transferring an element"); // calling tryTransfer() method // to transfer the null element g.tryTransfer(null, 2000, TimeUnit.MILLISECONDS); System.out.println("element transfer is complete"); } catch (NullPointerException e2) { System.out.println(e2); System.exit(0); } catch (InterruptedException e3) { System.out.println(e3); } } }).start(); try { // here thread is made inactive or sleep // for 2000 milliseconds Thread.sleep(2000); // here the thread is ready to receive System.out.println("Geeks for Geeks " + g.take()); } catch (Exception e) { System.out.println(e); } } }
transferring an element java.lang.NullPointerException
Referencias:
- https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#tryTransfer(E)
- https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#tryTransfer(E, %20long, %20java.util.concurrent.TimeUnit)
Publicación traducida automáticamente
Artículo escrito por suman_ptnl y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA