为什么我的线程继续运行?

时间:2017-05-09 17:39:07

标签: java multithreading

我试图实现一个线程教程,这是我扩展线程类的类。

package training;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Threadtutorial  extends Thread{
    Date now;
    Locale place;
    //int i;

    public void run(){
        int i=0;
        while(i<1){
        now = new Date();
        place = new Locale("en");
        //timeFormatter t = new timeFormatter();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        DateFormat d  ;
        DateFormat d2;
        d=DateFormat.getDateInstance(DateFormat.SHORT, place);
        d2=DateFormat.getTimeInstance(DateFormat.DEFAULT, place);
        //String d2=d.format(now);
        String ass=sdf.format(now);
        String bas=d.format(now);
        String css=d2.format(now);

        //String bss=sdf.format(ass);
        System.out.println("start");
        //System.out.println(ass);
        System.out.println(bas);
        System.out.println(css);
        i--;
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }}

}

以下是我执行线程的类。

package training;

public class Threadexecutor {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Threadtutorial t= new Threadtutorial();
        //for(int i=0;i<4;i++){
        t.start();
        Threadtutorial t2= new Threadtutorial();
        t2.start();


    //}

    }
}

为什么我的线程继续运行?为什么我不能使用stop方法?

2 个答案:

答案 0 :(得分:1)

while(i<1)

您正在递减i,因此while是无限的

i--;

答案 1 :(得分:0)

因为你只是递减变量i。它总是小于1.这样你就有了一个无限循环。