Leer Escribir archivo a través de múltiples hilos

Quiero leer y escribir en un mismo archivo a través de hilos.

Pero la condición es cuando el primer hilo termina de leer solo entonces el otro hilo debería escribir.

La solución que propuse fue:

class XYX {

  public void read(){
    synchronised(fileObj){
      //write the reading logic
    }
  }

  public void write(){
    synchronised(fileObj){
      //write the writing logic 
    }
  }
}

Por favor déjame saber tus ideas

Quiero retener este pedido

Lectura - Escritura - Lectura - Escritura - Lectura - etc.

Respuesta 1

Usaría un candado compartido entre los hilos.

Dado que solo un hilo mantendría el bloqueo en un momento dado, se aseguraría de que el hilo de escritura solo escribiera en el archivo cuando el hilo de lectura hubiera liberado el bloqueo (¡ en un bloque finalmente! )

Respuesta: 2

Usaría dos semáforos, uno para lectura, uno para escritura, con solo una unidad entre ellos. El método de lectura espera en el semáforo de lectura, luego lee, luego señala el semáforo de escritura. El escritor espera en el semáforo de escritura, luego escribe, luego señala el semáforo de lectura.

Respuesta: 3

Definitivamente use algo de java.util.concurrent. Sugeriría dos CountDownLatches aquí. La escritura ocurre en un hilo antes de llamar cdl1.countDowny cdl2.await; el hilo de lectura hace lo contrario.

Respuesta: 4

Para mi aplicación necesito un marco de terceros. Este marco consta de 2 archivos Jar y 2 bibliotecas nativas. Para fines de prueba, agregué los archivos a una carpeta que está en la ruta de mi biblioteca java. ...

El patrón de estado es útil al analizar String. Un estado significa una parte del trabajo, como un método. Cuando analice algunas palabras de la cadena, cambiará el estado a uno nuevo. ¿Qué significa esto? ...

Aquí estoy tratando de recuperar el valor de extensión (AnyType), que no es un elemento, por lo que "element.getchild ()" y co no funcionan. ¿Tienes una idea de cómo solucionar el problema? Gracias. <xsd: ...

Estoy tratando de mostrar algo de contenido en la celda del componente TableViewer. Muestra casi todos los caracteres excepto el carácter de tabulación (\ t). Parece que ignora el carácter \ t. ¿Alguien sabe alguna solución para esto? ...