JAVA基础----应用程序中如何新开一个线程

  • 通过继承Thread新开线程

  将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:


     class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }
 
         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }
 

  然后,下列代码会创建并启动一个线程:

     PrimeThread p = new PrimeThread(143);
     p.start();
 
  • 创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:
public class TestThread{    
    public static void main(String args[]){
        Runner run = new Runner();
        Thread t = new Thread(run);
        t.start();
        for(int i=0; i<50; i++) {
            System.out.println("MainThread: " + i);
        }
    }
}

class Runner implements Runnable{
    public void run() {
        System.out.println(Thread.currentThread().isAlive());
        for(int i=0;i<50;i++) {
            System.out.println("SubThread: " + i);
        }
    }
}

每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。

因为java只支持单继承,推荐使用实现Runnable()接口的方法新开线程

  • 工作中为了简单可以使用匿名类来创建线程
public class TestThread{    
    public static void main(String args[]){
        //使用匿名类创建线程
        new Thread() {
            public void run() {
                for (int i = 0;i < 50; i++) {
                    System.out.println("SubThread: " + i);
                }
            }
        }.start();
        for(int i=0; i<50; i++) {
            System.out.println("MainThread: " + i);
        }
    }
}

第三种方法写起来最简单,第二种最易于维护。

需要注意的是:Web开发中,多个线程之间的事物是互不影响的(不会一起回滚或者提交)。

猜你喜欢

转载自www.cnblogs.com/ssskkk/p/9277588.html
今日推荐