Java - Ayuda con clase Disco

 
Vista:
sin imagen de perfil

Ayuda con clase Disco

Publicado por Omar (2 intervenciones) el 01/03/2020 00:45:25
Hola necesito ayuda con una clase. Estamos haciendo un pequeno OS en JAVA el cual pueda tener usuarios, un numero de impresoras y un numero de discos.
La clase que aun no puedo entender como desarrollar es Disco. Cada Disco tiene una capacidad especificada para el constructor. El constructor debe asignar todos los StringBuffers (uno por sector) cuando el disco es creado y no debe asignar ninguno despues de eso. Solo puede leer o escribir una línea a la vez, por lo que para almacenar un archivo, debe emitir una escritura para cada línea de entrada. Puede implementarlo como una matriz de StringBuffers.
Las lecturas y escrituras toman 200 milisegundos, por lo que sus funciones de lectura / escritura deben permanecer inactivas durante ese tiempo antes de copiar los datos a / desde cualquier sector del disco.

1
2
3
4
5
6
clase Disco{
    static final int NUMERO_DE_SECTORES = 1024;
    StringBuffer sectores[] = new StringBuffer[NUMERO_DE_SECTORES];
    void lectura(int sector, StringBuffer datos); //llamar a dormir
    void escritura(int sector, StringBuffer datos): //llamar a dormir
}

Espero me puedan ayudar a comprender como hacer esta clase. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con clase Disco

Publicado por Costero (148 intervenciones) el 01/03/2020 23:41:14
Nota:
1- No hay garantia que el coding va a dormir por 200 ms, y no es exacto.
2- La synchronization garantiza que solo un Thread puede entrar a escribir o leer. Osea si hay otro Thread leyendo un Thread tratando de entrar a escribir sera bloqueado.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Disco {
    private final int numeroDeSectores;
    private final StringBuffer [] stringBuffers;
 
    public Disco(int numeroDeSectores) {
        this.numeroDeSectores = numeroDeSectores;
        this.stringBuffers = new StringBuffer[numeroDeSectores];
        for(int i = 0; i < numeroDeSectores; i++) {
            this.stringBuffers[i] = new StringBuffer();
        }
    }
 
    public synchronized void escritura(int sector, String datos) {
        try {
            this.stringBuffers[sector].append(datos);
            Thread.sleep(200);
        } catch(InterruptedException e) {
 
        }
    }
 
    public synchronized String lectura(int sector) {
        String value = null;
        try {
            value = this.stringBuffers[sector].toString();
            Thread.sleep(200);
        } catch(InterruptedException e) {
 
        }
        return value;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con clase Disco

Publicado por O (2 intervenciones) el 04/03/2020 20:18:49
Gracias de mucha ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar