O que está linha faz?
thread = new Thread(new EnviandoArquivos(diretorio_nf_enviar, diretorio_nf_enviadas, diretorio_nf_retorno,diretorio_nf_retorno_cancelada, diretorio_nf_retorno_inutilizada, diretorio_nf_temp));
O que está linha faz?
thread = new Thread(new EnviandoArquivos(diretorio_nf_enviar, diretorio_nf_enviadas, diretorio_nf_retorno,diretorio_nf_retorno_cancelada, diretorio_nf_retorno_inutilizada, diretorio_nf_temp));
a classe Thread não possue um construtor com tantos argumentos ?!?!??!
Primeiro de tudo, o que a classe EnviandoArquivos faz?
Cara como tantos??
só estou passando 1
EnviandoArquivos
é a quem o metodo run
Olá,
Essa linha não fez nada além de criar a thread. Ela não executou o ‘run’ de sua classe ainda. Isso só irá ocorrer quando vc chamar thread.start(), aí sim sua thread vai estar em estado ‘runnable’ e assim que o SO tiver condições ela será executada.
[]´s
Cara como tantos??
só estou passando 1
EnviandoArquivos
é a quem o metodo run
Tá certo cara eu vi errado…a resposta certa foi dada acima…ela apenas cria uma instância da classe Thread e mais nada. Enquanto vc não chamar o método start() ou run() nada acontece com a Thread. Agora na classe que implementa o Runnable (EnviandoArquivo) pode ser que acontece alguma coisa aí vc precisa enviar o que ela faz…
Como o rodrigo_gomes explicou, você apenas criou a thread.
Certamente sua classe EnviandoArquivos implementa Runnable.
Agora só falta executar a thread.
Abs,
Thread.start :d
Ele cria um objeto capaz de disparar uma nova Thread e detectar o seu estado.
Esse objeto, não é uma thread nem antes e nem depois do start().
Esse é um dos erros de conceito mais comum entre os iniciantes em multi-threading. Uma thread não é uma classe, nem é um trecho de código. É uma linha de execução.
Duas threads, na verdade, podem percorrer o mesmo objeto, da mesma classe, ao mesmo tempo.
Mas quem disse que o objeto dele é uma thread?
Ele usa a classe Thread que, consequentemente, executa o objeto mencionado em uma thread no SO.
Quem será que disse?
Em todo caso, imaginei que vocês soubessem do que estavam falando. Mas eu gosto de ressaltar, em letras garrafais, e várias vezes, sempre que vejo o tópico.
Essa é a maior confusão vista aqui no GUJ. De longe. E é o que mais atrapalha no momento de entender o conceito. Por isso, antes que o pessoal comece a trocar as bolas, eu já falo, repito e ressalto 10.000 vezes o conceito correto.
O fato do Java ter chamado a classe de Thread ainda ajuda a confundir ainda mais.
E, para não perder o costume, vou repetir. 
No caso acima, não foi criada nenhuma thread. Ela não existe, não há preempção. Foi criado o objeto que irá disparar uma thread, no momento do start. Esse objeto, também não será a thread, embora seja capaz de conhecer informações da thread que criou.
A thread será, como o Michel mesmo falou, um recurso oferecido pelo SO. Uma nova linha de execução, um novo fluxo no seu programa.
Olá,
Na minha resposta acima, eu me referi a thread pensando no objeto/classe Thread, e não no fluxo de execução, sorry.
Muito legal sua explicação ViniGodoy!
[]´s
Beleza, apenas me expressei mal. O que quis dizer com “você apenas criou a thread” foi: criou o objeto da classe Thread, o qual cria um canal de comunicação para executar um processo(thread) no SO.
Pronto. Esclarecido?
Olá,Essa linha não fez nada além de criar a thread. Ela não executou o ‘run’ de sua classe ainda. Isso só irá ocorrer quando vc chamar
thread.start(), aí sim sua thread vai estar em estado ‘runnable’ e assim que o SO tiver condições ela será executada.[]´s
DUVIDA ESCLARECIDA!
OBRIGADO A TODOS SEMPRE OTIMAS RESPOSTAS
ABRAÇO