2014-06-09 154 views
0

我有一个线程将运行后台,并在该线程实例化一个字符串值,4个线程将在该线程内运行..这是一个在android多线程的好习惯吗?

这是一个基于android编码的线程的良好做法?

String name = null; 

Thread a = new Thread(new First()); 
Thread b = new Thread(new Enemy()); 
Thread c = new Thread(new Enemy()); 
Thread d = new Thread(new Enemy()); 
Thread e = new Thread(new Enemy()); 
a.start(); 

class First implements Runnable { 
    public void run() { 
     name = "TARZAN"; 
     b.start(); 
     c.start(); 
     d.start(); 
     e.start(); 
    } 
} 

class Enemy implements Runnable { 
    public void run() { 
     System.out.println(Thread.currentThread().getName() + name); 
    } 
} 

这是从第一个线程执行4个可运行类的好习惯吗?

+0

这不是真正的多线程。你不是'开始'那些线程,你只需'在'First'线程上'运行'它们。 – Thilo

+0

啊是更新了代码start(),这是一个好习惯吗?在线程内启动一个线程?因为我现在尝试了它并且工作 –

+0

Android有很多专业的多线程类,你应该阅读关于fwiw –

回答

2

线程不在线程内部运行。但是你所做的并不是产生4条新线程 - 你只是将它们称为第一线程中的方法。要将它们产生为新线程,您需要使用.start(),而不是.run()。所以如果.run()真的是你想要的,那么我会说这是一个坏主意,因为根本没有理由做这些线程。如果你真的想使用.start()并启动一个新的线程,只要你有充足的理由这样做,我会说它很好。

+0

所以它确定在线程内部运行多个线程?但同步方法比等待第一个线程完成并启动其他线程更有效? –

+0

如果可以同时完成多个线程完成的大量工作,那么是同步您需要的部分,并且应该更快地完成。如果你只是将整个线程包装在一个同步块中,那么你不会放慢速度。它可能有点不寻常,需要类似的东西,但我可以看到一些用例。 –

+0

thnx Gabe Sechan! –

相关问题