Quando você chama run(), você está simplesmente chamando um método de uma classe, e esse método será executado serialmente (não será criada uma thread). E quando você chama start(), a jvm cria uma nova thread e depois irá chamar o run(), que será executado paralelamente com as outras threads.
R
rafaelvalerini
Não notou diferença porque o start() chama o método run() pois é uma thread. Segundo especificações da SUN
R
rafaelvalerini
Complementando…
Ao se chamar somente new Ac().run(); vc não esta startando a thread, vc simplesmente chama um método da classe Ac e não uma thread.
T
tecnocrata
adicionando que ao tratar de threads voce possui duas opcoes :
-fazer uma subclasse da classe thread
-implementar a interface Runnable
Cada maneira tem suas vantagens e desvantagens cabendo a voce decidir .
agora complementando oque foi dito , sobre a diferenca entre start() e run() :