下面的代码运行成功,这是否意味着我们可以启动线程两次?

时间:2015-04-26 07:42:05

标签: java multithreading thread-exceptions

下面的代码运行成功,这意味着我们可以启动线程两次吗?

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

2 个答案:

答案 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

希望这澄清!