Inserir ou alterar valor na thread / Add or set value in thread
Armazena um valor no campo de uma thread. O valor armazenado no escopo de uma thread podem ser reutilizado para processar várias solicitações e permanece ativo enquanto houver processos em execução. Dessa forma, uma thread será finalizada apenas quando não houver mais uso.
Esse bloco utiliza a classe ThreadLocal<T> do Java, consulte a documentação oficial para mais informações. Para obter o valor do campo armazenado, utilize o bloco Obter valor da thread.
É importante notar que uso de threads exige cuidado. Uma thread pode ser reutilizada na aplicação e seu valor pode ser obtido por quem tiver acesso ao campo armazenado, dessa forma, por segurança, não utilize uma thread para guardar dados sensíveis.
Se precisar armazenar outros tipos de informações, como em uma variável de sessão ou requisição, utilize os blocos Inserir ou alterar valor na sessão ou Inserir ou alterar valor na requisição, respectivamente. Consulte a documentação de cada bloco para mais informações.
Compatibilidade
Bloco servidor: cronapi.util.Operations.setInThread()
Retorno
Bloco sem retorno.
Parâmetros
Nome do campo
Nome do campo a ser criado na thread.
Posição: 1
Inglês: Field name
Tipo: Texto / String
Exemplo: "nome"
Valor do campo
Valor a ser definido no campo da thread.
Posição: 2
Inglês: Field value
Tipo: Texto / String
Exemplo: "Ana"
Exemplo 1
A imagem abaixo mostra um exemplo de uso do bloco Inserir ou alterar valor na thread. Na primeira função, estamos inserindo no escopo da thread o campo "nome" e, em seguida, é chamada a função "ObterValorNaThread". Nesta segunda função, obtemos o valor do campo "nome" utilizando o bloco Obter valor da thread, que será impresso no console do depurador.
A imagem a seguir mostra o resultado de execução da função da Figura 2, em que o valor do campo "nome" é impresso no console do depurador.
Exemplo 2
Neste segundo exemplo, vamos executar a função abaixo utilizando a funcionalidade do Agendador de Tarefas acessível a partir da aba Projeto no menu do sistema. Nesta ferramenta, configuramos uma tarefa para executar a função da Figura 3 a cada 15 segundos.
Na função da Figura 3, a cada execução da função pelo Agendador, obtemos a hora atual e verificamos se o minuto é ímpar. Em caso afirmativo, o bloco Inserir ou alterar valor na thread armazena a hora atual. Caso contrário, o bloco Obter valor da thread obtém o valor armazenado. Configure a função de bloco de programação como a imagem abaixo:
Defina uma variável com o nome "horaAtual" e, nela, insira o bloco Obter data e hora atual.
Defina uma variável com o nome "minuto" e, nela, insira o bloco Obter minuto da data com a variável "horaAtual".
Utilizamos os blocos imprime e criar texto com para imprimir a variável "horaAtual".
Insira o bloco se faça e, nele, o bloco é par, configurado com a opção ímpar, com a variável "minuto".
No parâmetro faça do bloco condicional, adicione os blocos imprime e criar texto com para imprimir a variável "minuto" e, na sequência, o bloco Inserir ou alterar valor na thread. No parâmetro Nome do campo do bloco, inserimos o texto "horaComMinutoImpar" e, no Valor do campo, a variável "horaAtual".
No parâmetro senão, insira os blocos imprime e criar texto com para imprimir o valor da thread, utilizando o bloco Obter valor da thread.
Após executar o projeto, a função da Figura 3 será executada a cada 15 segundos os resultados serão impressos no console do depurador, de acordo com o minuto da hora obtida. Podemos ver uma parte do resultado de execução na imagem abaixo.
Em destaque na imagem, vemos o resultado de impressão do bloco Obter valor na thread. Observe que o último "Valor na thread" está sem resultado, isso pode acontecer porque em cada execução um valor é inserido no escopo de uma thread e, possivelmente, esse valor da thread obtida ainda não tinha sido armazenado nela.
Nesta página