Future representa um resultado futuro de uma computação assíncrona - um resultado que eventualmente aparecerá no Futuro depois que o processamento for concluído.
https://www.baeldung.com/java-future
quarta-feira, 29 de agosto de 2018
ReadWriteLock do EJB
Um ReadWriteLock mantém um par de locksoperações associadas , uma para operações somente leitura e uma para gravação. O read lockpode ser realizado simultaneamente por vários segmentos de leitores, desde que não existam gravadores. O write locké exclusivo.
Todas as implementações de ReadWriteLock devem garantir que os efeitos de sincronização de memória das operações writeLock (conforme especificado na Lockinterface) também sejam válidos em relação ao readLock associado . Ou seja, um encadeamento que obtiver com êxito o bloqueio de leitura verá todas as atualizações feitas na liberação anterior do bloqueio de gravação.
Um bloqueio de leitura / gravação permite um nível maior de simultaneidade no acesso a dados compartilhados do que o permitido por um bloqueio de exclusão mútua. Ele explora o fato de que, embora apenas um único encadeamento por vez (um encadeamento do gravador ) possa modificar os dados compartilhados, em muitos casos, qualquer número de encadeamentos pode ler os dados simultaneamente (portanto, encadeamentos do leitor ). Em teoria, o aumento da simultaneidade permitido pelo uso de um bloqueio de leitura / gravação levará a melhorias de desempenho em relação ao uso de um bloqueio de exclusão mútua. Na prática, esse aumento na simultaneidade só será totalmente realizado em um multiprocessador, e somente se os padrões de acesso para os dados compartilhados forem adequados.
O fato de um bloqueio de leitura / gravação melhorar ou não o desempenho em relação ao uso de um bloqueio de exclusão mútua depende da freqüência com que os dados são lidos comparados à modificação, da duração das operações de leitura e gravação e da contenção dos dados. é, o número de threads que tentará ler ou gravar os dados ao mesmo tempo. Por exemplo, uma coleção que é inicialmente preenchida com dados e, posteriormente, modificada com pouca frequência, enquanto é pesquisada com frequência (como um diretório de algum tipo) é um candidato ideal para o uso de um bloqueio de leitura / gravação. No entanto, se as atualizações se tornarem frequentes, os dados passam a maior parte do tempo exclusivamente bloqueados e há pouco ou nenhum aumento na simultaneidade. Mais distante, se as operações de leitura forem muito curtas, a sobrecarga da implementação de bloqueio de leitura-gravação (que é inerentemente mais complexa que um bloqueio de exclusão mútua) pode dominar o custo de execução, particularmente porque muitas implementações de bloqueio de leitura-gravação ainda serializam todos os segmentos através de uma pequena seção de código. Por fim, apenas o perfil e a medição determinarão se o uso de um bloqueio de leitura / gravação é adequado para sua aplicação.
Embora a operação básica de um bloqueio de leitura / gravação seja direta, há muitas decisões de política que uma implementação deve tomar, o que pode afetar a eficácia do bloqueio de leitura / gravação em um determinado aplicativo. Exemplos dessas políticas incluem:
Determinar se deve conceder o bloqueio de leitura ou o bloqueio de gravação, quando os leitores e gravadores estão aguardando, no momento em que um gravador libera o bloqueio de gravação. A preferência do escritor é comum, pois espera-se que as gravações sejam curtas e pouco frequentes. A preferência do leitor é menos comum, pois pode levar a longos atrasos para uma gravação, se os leitores forem frequentes e duradouros, como esperado. Implementações justas ou "em ordem" também são possíveis.
Determinar se os leitores que solicitam o bloqueio de leitura enquanto um leitor está ativo e um gravador está aguardando, recebem o bloqueio de leitura. A preferência pelo leitor pode atrasar o autor indefinidamente, enquanto a preferência pelo gravador pode reduzir o potencial de simultaneidade.
Determinar se os bloqueios são reentrantes: um thread com o bloqueio de gravação pode readquiri-lo? Pode adquirir um bloqueio de leitura enquanto segura o bloqueio de gravação? O bloqueio de leitura é reentrante?
O bloqueio de gravação pode ser rebaixado para um bloqueio de leitura sem permitir um gravador intermediário? Um bloqueio de leitura pode ser atualizado para um bloqueio de gravação, em vez de outros leitores ou gravadores de espera?
Você deve considerar todas essas coisas ao avaliar a adequação de uma determinada implementação para sua aplicação.
Fonte: https://docs.oracle.com/javase/7
domingo, 26 de agosto de 2018
sábado, 25 de agosto de 2018
Itens do Scrum
Product Backlog: Conjunto total de funcionalidades que será desenvolvido durante o projeto.
Sprint Backlog: Conjunto de funcionalidade que será desenvolvido em uma determinada Sprint.
Sprint Review: Reunião de validação das funcionalidades. Caso não sejam aprovadas, elas retornam para o Product Backlog.
Daily Meeting: Reunião diária para colocar em dia o que foi feito.
Papeis do Scrum
Scrum Master:
Responsável por liderar a equipe, e principal elo entre Procuct Owner e o
resto da equipe. É imprescindível que ele assegure o cumprimento dos
valores e regras do Scrum durante a execução.
Product Owner: É o dono do produto, e investidor. É o principal tomador de decisões do projeto.
Development Team:
Responsáveis pela concepção, construção técnica e testes do produto. Em
um desenvolvimento de aplicativo, por exemplo, o Development Team pode
ser formado pelo programador e pelo designer.
sábado, 11 de agosto de 2018
Abrir multiplas telas no JavaFX
...
......
........
private void init(Stage primaryStage) { Group root = new Group(); primaryStage.setScene(new Scene(root)); //create a button for initializing our new stage Button button = new Button("Create a Stage"); button.setStyle("-fx-font-size: 24;"); button.setDefaultButton(true); button.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent t) { final Stage stage = new Stage(); //create root node of scene, i.e. group Group rootGroup = new Group(); //create scene with set width, height and color Scene scene = new Scene(rootGroup, 200, 200, Color.WHITESMOKE); //set scene to stage stage.setScene(scene); //center stage on screen stage.centerOnScreen(); //show the stage stage.show(); //add some node to scene Text text = new Text(20, 110, "JavaFX"); text.setFill(Color.DODGERBLUE); text.setEffect(new Lighting()); text.setFont(Font.font(Font.getDefault().getFamily(), 50)); //add text to the main root group rootGroup.getChildren().add(text); } }); root.getChildren().add(button); } @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); }...............
Assinar:
Comentários (Atom)




