O que faz o setDaemon da classe Thread?

Olá pessoal,

queria saber o que faz o método setDaemon da classe Thread, li a documentação do
Java e não entendi bem, alguem tem uma explicação legal para me dar
por favor?

Tenho uma outra dúvida, está é em relação o método join() também da classe
Thread, um dia perguntei aqui no fórum o que fazia o método join() a resposta
foi essa:

“Quando vc chama o metodo join() na instância de alguma das thread você está
dizendo para a thread main espere essa thread terminar para poder continuar”.

Minha dúvida é, o método join só age com a Thread main? ou seja, só Thread
main recebe este comando: “Olá thread main, eu sou uma outra Thread e acionei
o metódo join(), espere eu fazer o que tenho para fazer depois você continua a
fazer o que você estava ou iria fazer”.

Queria saber se uma outra Thread (sem ser a main), poderia estar recebendo este
comando, de estar parando ou não sendo inicializada até que outra Thread tenha
iniciado e finalizado suas ações.

Vlww Pessoal, fico muito agradecido pelas as resposta.

abs,
Luan