java implementar los hilos de tres maneras, stop () y suspender () Método Por qué no se recomienda

1 implementación de hilos

java5 hace, solamente dos:
Hay dos métodos, a saber, el uso new Thread()y la newThread(runnable)forma de la primera llamada directa thread的runmétodo, por lo que tienden a utilizar Threadsub-categorías, a saber new SubThread(). La segunda llamada a runnablela runmétodo. clase Thread se heredan e implementar Ejecutable

1.1 clase Thread base

newThread(){}.start(); Esto indica que la llamada Threadobjeto subclase runmétodo, newThread(){}que muestra un Threadejemplo de una subclase anónima objeto, la subclase más runcódigo es el siguiente:

new Thread(){
    public void run(){
    	//代码
    }
}.start();

clase 1.2 El Ejecutable

new Thread(newRunnable(){}).start(); Esto indica que la llamada Threadsujeto que recibe el Runnableobjeto runmétodo, newRunnable(){}que muestra un Runnableejemplo de una subclase objeto anónimo, runnablela subclase más runcódigo es el siguiente:

new Thread(newRunnable(){
                  public void run(){
						//代码
                  }     
          }

    ).start();

1.3 subproceso del grupo de redacción

De java5manera de crear inicio de subprocesos múltiples, así como algunos de la agrupación de hebras:

ExecutorService pool= Executors.newFixedThreadPool(3)
for(inti=0;i<10;i++){
		 pool.execute(new Runable(){public voidrun(){}});
}
//或者另外一种写法
Executors.newCachedThreadPool().execute(newRunable(){public void run(){}});
//或者又有另一种写法
Executors.newSingleThreadExecutor().execute(newRunable(){public void run(){}});

2 parada y suspender métodos

Por synchronizedpalabra clave modificada método de sincronización
en contra del uso stop(), ya que no es seguro. Será liberar todos los bloqueos adquiridos por un hilo, y si el objeto está en un estado incoherente, por lo que otros hilos puede comprobar y modificarlos en ese estado. El resultado es difícil de ver el verdadero problema.

suspend()Métodos propensas a punto muerto. Llame a suspend()tiempo, el subproceso de destino se detendrá, pero que todavía mantienen bloqueado antes obtenido. En este punto, cualquier otro hilo puede acceder a recursos bloqueados, a menos que "挂起"el hilo reanuda la ejecución. 对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源Que dará lugar a un punto muerto. No se debe utilizar suspend(), pero debe poner un cartel en la clase Thread, el hilo debe señalarse que activa o suspendida. Si el indicador indica que el hilo debe colgar, utilizan wait () ordena que entre en el estado de espera. Si el indicador indica que el hilo debe ser restaurada, a continuación, utilizar un Notify () para reiniciar el hilo.

Publicados 334 artículos originales · ganado elogios 186 · vistas 310 000 +

Supongo que te gusta

Origin blog.csdn.net/u012060033/article/details/103873590
Recomendado
Clasificación