Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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.


Image Added

Figura 1 – Bloco Inserir ou alterar valor na thread


Aviso

É 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.

Informações

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.


Image Added

Figura 2 - Exemplo de uso do bloco Inserir ou alterar valor na thread


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.


Image Added

Figura 2.1 - Resultado de execução da função da Figura 2

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:


Image Added

Figura 3 – Função que será executada pelo Agendador de Tarefas


  1. Defina uma variável com o nome "horaAtual" e, nela, insira o bloco Obter data e hora atual.
  2. Defina uma variável com o nome "minuto" e, nela, insira o bloco Obter minuto da data com a variável "horaAtual".
  3. Utilizamos os blocos imprime e criar texto com para imprimir a variável "horaAtual".
  4. Insira o bloco se faça e, nele, o bloco é par, configurado com a opção ímpar, com a variável "minuto".
  5. 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".
  6. 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.


Image Added

Figura 3.1 - Resultado de execução da função da Figura 3

Nesta página

Índice

Inserir ou alterar valor na thread

Cria ou altera um valor no escopo da thread corrente. 

Aviso
titleObservação

Os valores definidos na thread terão vida apenas durante o escopo da thread e deixam de existir ao final dela.

Parâmetros de entrada

NomeTipoDocParâmetro 1TextoNome do campoParâmetro 2TextoValor do campo

Compatibilidade

Image Removed Servidor

Exemplo

No exemplo abaixo, a função "InserirValorThread" cria um valor no escopo da thread e em seguida chamamos a função "ObterValorThread" que imprime esse valor no console do depurador.

Image Removed

Figura 1 - Exemplo de uso dos blocos de Thread

Sobre Thread

Para saber mais sobre o assunto, acesse o verbete Thread (Wikipedia).