El hilo único es seguro porque solo hay un hilo, y no hay múltiples hilos que tomen el mismo recurso.
Ejemplo de código:
public class SingleThread {int num = 10; public void add () {while (num <13) {num ++; try {Thread.sleep (1000);} Catch (Exception e) {System.out.println ("Interrupt");} System.out.Println (num);} Public estatic estatic Void (] args) {Thread Thread // Obtener el objeto de hilo actualmente en ejecución thread.setName ("un solo hilo"); // Thread Rename System.out.println (Thread.getName ()+"Running"); Singlethread st = new Singlethread (); St.Add ();}}Seguridad múltiple, bloques de código sincronizados sincronizados
sincronizado (objeto) {}; // bloque de código sincronizado
Nombre del método del valor de retorno sincronizado () {}; // Método sincronizado
clase uno {int num = 10; public void add () {Synchronized (this) {// Bloques de código de sincronización, el método de sincronización también puede lograr el efecto sincronizado void add () {}; num ++; intente {Thread.sleep (1000); } capt (interruptedException e) {System.out.println ("interrumpido"); } System.out.println (num); }}} Clase dos implementos runnables {One One = new One (); @Override public void run () {One.Add (); // llamando al método add}} Synch de clase pública {public static void main (string [] args) {dos dos = new two (); Hilo t1 = nuevo hilo (dos); // crear tres hilos infantiles T2 = nuevo hilo (dos); Hilo t3 = nuevo hilo (dos); t1.start (); t2.start (); t3.start (); }}Nota: ¡Observe la diferencia en la ejecución de los resultados de eliminar las palabras clave sincronizadas!
Resultados de la operación normal:
11
12
13