El contenido involucrado en este capítulo incluye:
1. Introducción al rendimiento ()
2. Ejemplo de rendimiento ()
3. Comparación entre el rendimiento () y Wait ()
1. Introducción al rendimiento ()
El propósito del rendimiento () es ceder. Permite que el hilo actual ingrese al "estado listo" desde el "estado en ejecución", de modo que otros hilos de espera con la misma prioridad puedan obtener los derechos de ejecución; Tener la misma prioridad.
2. Ejemplo de rendimiento ()
A continuación, vea su uso por ejemplo.
La copia del código es la siguiente:
// Código fuente de YiernTest.Java
clase Thread extiende el hilo {
Public Thread (nombre de cadena) {
super (nombre);
}
Public sincronizado void run () {
para (int i = 0; i <10; i ++) {
System.out.printf ("%s [%d]:%d/n", this.getName (), this.getPriority (), i);
// Cuando divide 4, llame al rendimiento
if (i%4 == 0)
Thread.yield ();
}
}
}
clase pública de rendimiento {
public static void main (string [] args) {
Thinta t1 = new thinda ("t1");
Thinta t2 = new thinda ("t2");
t1.start ();
t2.start ();
}
}
(Una vez) Resultado de la operación:
La copia del código es la siguiente:
T1 [5]: 0
T2 [5]: 0
T1 [5]: 1
T1 [5]: 2
T1 [5]: 3
T1 [5]: 4
T1 [5]: 5
T1 [5]: 6
T1 [5]: 7
T1 [5]: 8
T1 [5]: 9
T2 [5]: 1
T2 [5]: 2
T2 [5]: 3
T2 [5]: 4
T2 [5]: 5
T2 [5]: 6
T2 [5]: 7
T2 [5]: 8
T2 [5]: 9
Descripción de los resultados:
Cuando "Subpuste T1" puede ser entero por 4, no cambia a "Subprota T2". Esto muestra que aunque el rendimiento () puede permitir que los hilos ingresen al "estado listo" desde el "estado en ejecución"; Incluso si estos "otros hilos" tienen la misma prioridad que el hilo que actualmente llama rendimiento ().
3. Comparación entre el rendimiento () y Wait ()
Sabemos que la función de Wait () es permitir que el hilo actual ingrese al estado "Wait (Bloqueo) desde el" Estado en ejecución "y también libere el bloqueo de sincronización. La función de rendimiento () es ceder, lo que también hará que el hilo actual deje el "estado en ejecución". Sus diferencias son:
(01) Wait () es dejar que el hilo ingrese al "Estado de espera (Bloqueo)" del "Estado en ejecución", mientras que no rendimiento () es dejar que el hilo ingrese al "Estado listo" del "Estado en ejecución".
(02) Wait () es un bloqueo de sincronización que en el rostro de la liberación del objeto que posee, mientras que el método de rendimiento () no liberará el bloqueo.
El siguiente ejemplo muestra que el rendimiento () no liberará el bloqueo.
La copia del código es la siguiente:
// Código de origen de YendedLockTest.Java
clase pública DownlodlockTest {
objeto estático privado obj = nuevo objeto ();
public static void main (string [] args) {
Thinta t1 = new thinda ("t1");
Thinta t2 = new thinda ("t2");
t1.start ();
t2.start ();
}
La clase estática Thread extiende el hilo {
Public Thread (nombre de cadena) {
super (nombre);
}
public void run () {
// Obtener el bloqueo de sincronización del objeto OBJ
sincronizado (obj) {
para (int i = 0; i <10; i ++) {
System.out.printf ("%s [%d]:%d/n", this.getName (), this.getPriority (), i);
// Cuando divide 4, llame al rendimiento
if (i%4 == 0)
Thread.yield ();
}
}
}
}
}
(Una vez) resultado:
La copia del código es la siguiente:
T1 [5]: 0
T1 [5]: 1
T1 [5]: 2
T1 [5]: 3
T1 [5]: 4
T1 [5]: 5
T1 [5]: 6
T1 [5]: 7
T1 [5]: 8
T1 [5]: 9
T2 [5]: 0
T2 [5]: 1
T2 [5]: 2
T2 [5]: 3
T2 [5]: 4
T2 [5]: 5
T2 [5]: 6
T2 [5]: 7
T2 [5]: 8
T2 [5]: 9
Descripción de los resultados:
Se inician dos hilos T1 y T2 en el hilo principal principal. T1 y T2 se referirán al bloqueo de sincronización del mismo objeto en run (), es decir, sincronizado (obj). Durante la operación T1, aunque llamará a Thread.yield (); ¡Porque T1 no libera el "bloqueo sincrónico en poder de OBJ"!