Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''threads''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 4 registros

  1. rtavix

    gerenciamento de threads, controle de dados

    Estou com dúvidas de como fazer um controle de uma thread, eu tenho um sistema de importação, onde importo minhas planilhas para a base dados, porém utilizo threads pois possuo muitos registros, funciona! Porém eu gostaria de saber como eu faço para pegar o ultimo numero do processo judicial, e tipo todo processo judicial que terminar com o numero 0 eu pego e insiro somente os processos terminados com o numero 0, e todos terminados com 1 e 2 e assim por diante dentro da thread para ter uma controle? Esse é meu método de importar: protected void importar_Click(object sender, EventArgs e) { usuarioLogado = aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login); log.Clear(); //Stopwatch relogio = new Stopwatch(); //relogio.Start(); DataTable Dados = new DataTable(); //Verifica se um arquivo foi selecionado if (selecionarArquivo.HasFile) { //Valida a extensão do arquivo: if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls") ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>"); else { if (selecionarArquivo.FileContent != null) { string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName; selecionarArquivo.SaveAs(Excel); Dados = DadosExcel(Excel); //Tentavia de ordenação através da coluna. //System.Data.DataView view = Dados.DefaultView; //view.Sort = "G ASC"; //Tentativa 2 de ordenação pegando pelos dados. //string strSort = "NOME ASC"; //System.Data.DataView dtview = new System.Data.DataView(Dados); //dtview.Sort = strSort; //DataTable dtsorted = dtview.ToTable(); //Tentaiva 3 //Dados.DefaultView.Sort = "G Asc"; //string[] nomeInteressado = new string[Dados.Rows.Count]; //for (int i = 0; i < Dados.Rows.Count; i++) //{ // nomeInteressado[i] = Dados.Rows[i]["G"].ToString(); //} //Array.Sort(nomeInteressado); //for (int i = 1; i < Dados.Rows.Count; i++) //{ // Dados.Rows[i]["G"] = nomeInteressado[i]; //} //Tentativa pela ordenação usando o IOrderedEnumerable, não funcionou. //IOrderedEnumerable<DataRow> resultado; //resultado = Dados.Select().OrderBy(d => d["NOME"]); //Tentativa invalida //Dados.DefaultView.Sort = "A Asc"; //var dataparam = Dados.AsEnumerable().OrderBy(linha => linha.Field<int>("indice")); //Dados.Columns.Add("NUMERO JUDICIAL", typeof(string)); //Dados.Rows.Add(16, "0022350-77.2016.8.08.0048"); //Dados.Rows.Add(76, "0021704-78.2016.8.08.0012"); //Dados.Rows.Add(13, "0009360-20.2017.8.08.0048"); //Dados.Rows.Add(14, "0017555-91.2017.8.08.0048"); //Dados.Rows.Add(73, "0031279-52.2012.8.08.0012"); //Dados.Rows.Add(15, "0017734-93.2015.8.08.0048"); //Dados.Rows.Add(111, "0015570-97.2015.8.08.0035"); //var dataparam = Dados.AsEnumerable().OrderBy(linha => linha.Field<int>("indice")); //foreach (var item in dataparam) //{ // string text = ""; // foreach (var clm in item.ItemArray) // text += string.Format("{0}\t " + " _ ", clm); // Response.Write(text + "<br/>"); //} Dados.Columns.Add("indice", typeof(int)); int i = 1; foreach (DataRow linha in Dados.Rows) { linha["indice"] = i; i++; } var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5); //Elimina a última linha registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1); //ler de 100 em 100 regisros int quantidade_por_pagina = 100; int total_de_paginas; //Conta os registros válidos int qtd_total_registros = registrosValidos.Count(); //Realiza o calculo matemáticos para total de paginas. total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina); if (registrosValidos.Count() > 0) { bool layoutValido = VerificaLayout(Dados); if (!layoutValido) ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>"); else { //Validação básica necessária para importação. PS: NumLinhas-1 porque o arquivo tem a última linha com total, que é inútil à importação. VerificacaoPreliminar(registrosValidos); //Inicio da rotina de repetição para leitura de todas as linhas, iniciando na célula B6 if (!arquivoInvalidado) { this.ValidaDuplicidadeInteressado(); //Criando as tarefas paralelas List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>(); for (int j = 0; j < total_de_paginas; j++) { var pagina = j; //leio as 100 linhas var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina); //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo var data_rows_divididos = linhasPorPagina.SplitList(10); foreach (var linhasDivididas in data_rows_divididos) { //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, j, usuarioLogado)); } } //INICIOS AS TAREFAS PARALELAS foreach (var tarefa in TarefasParalelas) tarefa.Start(); // AGORA ESPERO TODAS TAREFAS CONCLUIREM System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray()); // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>"); } if (listaGravarProcInter.Count != 0) { foreach (ProcessoInteressado item in listaGravarProcInter) { aplProcessoInteressado.salvar(item); } } if (listaLogsAuditoria.Count != 0) { foreach (var item in listaLogsAuditoria) { aplLog.LogarAtividade(usuarioLogado, item, DateTime.Now); //aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now); } } else { logimportacao.Visible = true; loglbl.Text = log.ToString(); ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>"); } } } } } } //Tempo de importação. //relogio.Stop(); //Debug.WriteLine("#############" + relogio.Elapsed.ToString()); } E aqui é meu método da Thread: private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int i, Usuario usuarioLogado) { //usuarioLogado = aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login); i = 4; i++; Action<object> processamento = (dados) => { /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/ NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession()); //Tentativa de ordenação por linha dentro do foreach direto no método da thread. //foreach (var linha in ((IEnumerable<DataRow>)dados).OrderBy(linha => linha["indice"])) foreach (var linha in (IEnumerable<DataRow>)dados) { List<Processo> listaProcessoExistente = new List<Processo>(); Processo processo = null; Interessado interessado = new Interessado(); //busca o processo pelo nº judicial anterior ou atual if (!linha.ItemArray[1].ToString().Equals("")) processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString()); if (processo == null) { if (!linha.ItemArray[2].ToString().Equals("")) processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString()); } //busca o interessado por cpf/cnpj if (linha.ItemArray[7].ToString().Length == 14) interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString())); if (linha.ItemArray[7].ToString().Length == 18) interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString())); if (processo != null) { //se o processo não for nulo busco todos procinter relacionados a ele List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo); if (listaprocinter.Exists(o => o.Interessado == interessado)) log.Append("O interessado informado na linha " + (linha["indice"]) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); //log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); // log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); setProcInter(processo, interessado, linha, i); } else { //Novo Processo - 6.3 processo = new Processo(); processo.Interessado = interessado; processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim(); processo.RenunciaCredito = "N"; processo.Situacao = new AplSituacao().ConsultarPorId(1); processo.HonorarioDativo = "S"; processo.Reclamado = new AplReclamado().buscaItem(2); processo.TipoDocumento = new AplTipoDocumento().buscaItem(4); processo.TipoProcesso = "O"; if (linha.ItemArray[5].ToString().Contains("juizado")) processo.Tribunal = new AplTribunal().buscaItem(71); else processo.Tribunal = new AplTribunal().buscaItem(3); processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3); VaraExecucao vara = new VaraExecucao(); if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals("")) { List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim()); if (listaVaraComarca.Count != 0) { if (linha.ItemArray[4].ToString().Equals("")) { vara = listaVaraComarca.Find(o => o.NumeroVara == null); } else { vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim())); } } } if (vara != null && vara.Codigo != 0) { processo.VaraExecucao = vara; } aplProcesso.gravar(processo); //aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial aplLog.LogarAtividade(usuarioLogado, "Importação do processo de número judicial: " + processo.NumProcessoJudicial + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal " + processo.Tribunal.NomeTribunal + ".", DateTime.Now); //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>"); setProcInter(processo, interessado, linha, i); } }//Fim Foreach //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>"); logimportacao.Visible = true; loglbl.Text = log.ToString(); //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>"); ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>"); }; ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading()); if (sessao != null) { if (sessao.Transaction != null && sessao.Transaction.IsActive) { sessao.Transaction.Rollback(); } else { sessao.Flush(); } sessao.Close(); } //Tarefas baseadas de forma assíncrona System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam); return tarefa_executar; } Como eu poderia ter esse controle? Coluna C é aonde está meus processos judicial, no meu sistema indice 0 é igual a coluna 1, indice 1 é igual a coluna 2, indice 2 é igual a coluna 3(local do processo). Como poderia esta controlando isso?
  2. rtavix

    gerenciamento de threads, controle de dados

    Pessoal, estou abrindo este tópicos, pois possuo uma aplicação que utiliza threads e tarefas paralelas, porém me sugiram certas duvidas com relação a utilização da mesmas. Recebi uma demanda que terei que pegar cada numeração de processo terminado em 1, 2, 3, 4, 5, 6, 7, 8, 9 e 0 e jogar em cada thread, minha dúvida é como fazer isso e se existe essa possibilidade. Tenho o seguintes numero de processo na minha planilha excel: 000543725.2013.8.08.0048 000229990.2015.8.08.0012 000222070.2010.8.08.0050 000269650.2014.8.08.0024 000246219.2016.8.08.0050 000406798.2017.8.08.0006 000252934.2016.8.08.0001 E assim por diante, não sei como o processador iria se comportar nesse caso, se pensarmos direitinho seria parecido como uma ordenação de dados.
  3. Mayara Andres

    utilizando threads em java

    Olá, preciso implementar um código java usando threads, como o anunciado da atividade pede: "O trabalho consiste em alterar o código que busca valores dentro de um vetor (disponível no blackboard) de forma a criar N threads de acordo com a vontade do usuário (ler o número de threads que o usuário deseja criar) e buscar um valor no vetor (apenas 1, também inserido pelo usuário) de forma paralela, ou seja, cada thread criada deve procurar por um região diferente do vetor. Ao final da execução mostre qual foi a thread que encontrou o valor." PS: EU SÓ QUERO SABER POR ONDE EU COMEÇO, A LÓGICA EU ENTENDI, SÓ NÃO SEI COMO FAZER. classe thread_busca package trabalho_thread; import java.util.logging.Level; import java.util.logging.Logger; class ThreadBusca extends Thread { private int vetor[]; private int numeroProcurar; public ThreadBusca(int[] vet, int numeroProcurar) { this.vetor = vet; this.numeroProcurar = numeroProcurar; } @Override public void run() { for (int i = 0; i < vetor.length; i++) { if (vetor[i] == numeroProcurar) { System.out.println("Indice de "+numeroProcurar+" eh "+i); return; } try { Thread.sleep(10); } catch (InterruptedException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } System.out.println("Indice de "+numeroProcurar+" eh -1"); } } classe main package trabalho_thread; import java.util.Arrays; import java.util.Random; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int vet[] = new int[200]; Random random = new Random(); for(int i=0;i<200;i++){ vet[i] = random.nextInt(4999)+1; } System.out.println(Arrays.toString(vet)); int numero=-1; do{ numero = Integer.parseInt(JOptionPane.showInputDialog("Numero a pesquisar:")); new ThreadBusca(vet, numero).start(); }while(numero>0); } }
  4. O Servidor deve ter a capacidade de receber conexões de aplicações clientes utilizando uma porta pré-estipulada. Este servidor receberá uma mensagem que será formada pelos seguintes campos:remetente,destinatário,assunto e corpo da mensagem. Pelos campos de remetente e destinatário entende-se como sendo os nomes dos usuários do sistema. Assunto é uma strings de até 100 caracteres.O corpo da mensagem é uma strings de até 1000 caracteres. O cliente deve ter a capacidade de conectar no servidor, em uma porta pré-determinada e enviar uma mensagem que será formada com o mesmo formato já descrito anteriormente. Poderá ser executado mais um cliente no mesmo computador. O programa cliente deverá ter uma interface gráfica (desktop-swing ou web). O programa servidor não precisa ter interface gráfica, podendo ser apenas do tipo console.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.