Los hilos en java son para realizar tareas simulataneas y secundarias, que no interfieran con las tareas principales. Imaginate que tu eres un agente entrenado y tienes 20 blancos de practica, pero tu blanco principal es el blanco numero 9 y 10, entonces tu estas a 50 metros de los 20 blancos que están uno al costado de otro, entonces tu eres el hilo principal de tu programa que esta corriendo hacia tu blanco principal, tu misión tarea principal es darle a los blancos 9 y 10 y tu tarea secundaria es darle a todos los demás blancos, entonces tienes un problema no te puedes dividir en 18 personas que corran al costado tuyo para darle a los otros 18 blancos, tu no puedes pero JAVA si... Puedes crear 18 hilos más a que cada uno haga su tarea secundaria totalmente independiente a tu tarea prnicipal, entonces, al mismo tiempo, todos los 20 blancos han sido derrumbados. De la misma manera funciona los hilos en java, mejor ejemplo que ese no te puedo dar. El hilo tiene un método run, y dentro de ese método se ejecutara el código en segundo plano. Cuando hay varios hilos corriendo simultáneamente se deben sincronizar para que no se estropee lo que se esta haciendo, por ejemplo si uno esta accediendo a un archivo a escribir la palabra "todoexpertos", y otro esta accediendo al mismo archivo, al mismo tiempo a escribir "dimondi21" podría quedar algo como eso "dtimodnoi2ex1pertos" para eso se deben sincronizar.. Los threads en java son un mundo, te permiten hacer muchas cosas en mucho menos tiempo, y manejarlos es fácil, yo tenia muchos ejemplos de hilos pero se me perdió mi pendrive y ahí se fue mucho código, en google puedes encontrar tutoriales, es fácil. Espero haberte despejado las dudas, cualquier cosa me preguntas, de lo contrario no olvides cerrar la pregunta y darle un calificación.
Bueno ahora mi duda es la siguiente para un aplicativo cliente/servidor es necesario realizar hilos o cuando realmente se utilizan los hilos
Podría ser, yo no he usado hilos para cliente servidor, ya que normalmente para el servidor es donde esta alojado todo el código java, entonces, creo que no me explique bien, los hilos son para tareas muy pesadas, tareas secundarias que interfieren con la tarea principal. Los hilos se usan depende de la magnitud del proyecto, para data demasiado grande que maximiza el tiempo de respuesta del servidor podrías usar hilos, pero nmormalmente es paso de información de una tabla a otra y son cosas muy pequeñas y no es necesario usar hilos, más que todo seria para una aplicación desktop, que puede estar mucho tiempo prendida y el hilo puede trabajar de forma secundaria, pero en un servidor donde la data va de la página > clase java> base de datos > clase java > página, no seria conveniente ya que si el hilo demora mucho también agrandaría el tiempo de respuesta hasta que el hilo termine.