下面的代码运行成功,这意味着我们可以启动线程两次吗?
public class enu extends Thread {
static int count = 0;
public void run(){
System.out.println("running count "+count++);
}
public static void main(String[] args) {
enu obj = new enu();
obj.run();
obj.start();
}
}
输出 - 运行计数0 跑数1
答案 0 :(得分:7)
不,当您拨打private func stockCell(tableView: UITableView, indexPath:NSIndexPath) -> UITableViewCell {
var cell : SNStockCell? = tableView.dequeueReusableCellWithIdentifier(stockCellReuseIdentifier) as? SNStockCell
if (cell == nil) {
cell = SNStockCell(reuseIdentifier:stockCellReuseIdentifier, primaryTextColor:primaryTextColor, secondaryTextColor:secondaryTextColor)
}
cell!.configureWithStock(stockAtIndexPath(indexPath))
cell!.showsCustomLineSeparator = true
cell!.customLineSeparatorColor = tintColor
return cell!
}
时,您只启动了一次新线程。 obj.start()
在当前线程中执行obj.run()
方法。它不会创建新的线程,您可以根据需要多次调用它。
另一方面,不可能多次调用run
。
答案 1 :(得分:0)
Thread生命周期以Thread.State.TERMINATED结束。
你所做的就是从同一个线程运行run()
方法 - main
- Thread。
如果要检查代码部分中线程的访问权限,那么这是一个非常简单的测试:
public class randtom extends Thread {
static int count = 0;
public void run(){
System.out.println(Thread.currentThread().toString());
System.out.println("running count "+count++);
}
public static void main(String[] args) {
randtom obj = new randtom();
obj.run();
obj.start();
}}
运行此结果:
Thread[main,5,main]
running count 0
Thread[Thread-0,5,main]
running count 1
希望这澄清!