ainda nao usouwaitSleepJoin: Bloqueada a pedido de algum metodoCriacao de Thread SimplesFuncao que o Thread vai executarObjeto do tipo ThradStart, como parametro vai a funcaoObjeto do tipo thread, como parametro vai o threadStartThread MultiplosDo mesmo modo que as simplesthreadJoin Apos iniciado o join faz com que elas aguardem a execucao das outras pra proceguirPrioridade da threadsNesta OrdemHighestAbove normalNormalBelow NormalLowetsPassando dados para uma threadUtiliza-se o ParametrizedStartThread no lugar do startThread que e igual ao outro so que o metodo que sera executado, recebe parametros que sao passados no metodo Start.Parando as ThreadsUtiliza-se o thread.Abort. Atencao para o local onde a thread nome para as inconsistencias. Estes locais sao chamados regioes criticas.Compartilhando informacoesNo momento e que as threads estao rodando dependendo do processador alguns valores resultandes das threads podem passar em branco. Para isso faremos uso do Interlocked. Observar que esta classe comente e usada em operacoes aritimeticasInterlockedadd: faz a adicao de dois numerosexchange:Troca dois valores de uma operacaoincrement: adiciona 1 ao valor da operacao atomicaread: Le um valor de uma operacao atomicaSincronizationLocksSincroniza o acesso a objetos, para nao haver mistura nos dadosenter: Cria uma transacao de seguranca para um objeto especificoexit: Libera a travatryEnter: tenta criar mas tem u tempo de timeoutwaitDeadLocksE o caso em que dois pedacos de codigo tantam acessar o mesmo objeto se anulandoOutros metodos de sincronizacaoreaderWriterLock: Trava para a escrita e nao para a leituramutex: Sincronizacao atraves do appDomainsemaphore: barra o acesso a recurso e cria algumas threadsevent: Notifica as threads que um evento ocorreuProgramacao AssincronaSignifica autorizar partes do codigo a rodar em threads diferentesTodos os metodos que utilizam os modelo BeginXXX, EndXX, funcionam como threads assincronasModelos de utilizacaoWait-Until-Done: Inicia o metodo assincrono e vai fazer outra coisa. Esta outra coisa fica bloqueada ateh o q estiver fazendo tiver terminado.Poolling: Igual ao anterior porem existe um codigo que testa se a outra atividade ja terminouCallBack: Nesse caso um metodo e especificado para ser executado quando o metodo parar de executarExecoes e APMAs excecoes somente sao executas depos de todo o trecho BeginXXX EndXXX terem sido executadosUsando o pool de ThreadsSao threads ja prontas e recomendadas pelo frameworkMetodosgetAvaiableThreads:Numero de threads disposnivel para serem utilizadas no poolgetMaxThreads:Numero Maximo de threads suportados pelo poolgetMinThreads: Numero minimo de threads criados a qquer momentoqueueUserWorkItem: Adiciona u trabalho ao pool para ser executado a qquer momentoregisterWaitForSingleObject: Permite que o callback possa ser associado a um WaitHandle, quando este handle esta sinalaizadosetMaxThread: Associa o numero maximo de thread desse poolsetMixThread: Associa o numero minimo de thread desse poolunsafeQueueNativeOverlapped: Trabalha com IO de arquivosunsafeQueueUserWorkItem: Enfilera um trabalho para threads de alta performance. Nao propaga essa execucao para uma thread seguinteunsafeRegisterWaitForSingleObject: Usado para associar um CallBack a um Processo WaitHandle.Motivos para se altarar o numero de Thread no poolQuando o numero de trabalhos no pool e muito grandeAumentando-se o numero minimo inicial de threads aumenta-se a perfomance.SychronizationContext Serve pra ser utilizado em diferentes ambientes