- 通过继承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开发中,多个线程之间的事物是互不影响的(不会一起回滚或者提交)。
原文地址:https://www.cnblogs.com/ssskkk/p/9277588.html
时间: 2024-10-10 06:09:14