Java多线程的创建和启动

来源:互联网 发布:在党规党纪面前知敬畏 编辑:程序博客网 时间:2024/04/20 05:33

参考:李刚《疯狂java讲义》

线程的创建和启动

一、    继承Thread类创建并启动多线程

步骤:

1.    定义Thread类的子类,并重写该类的run方法,run方法的方法体代表了线程要执行的任务;

2.    创建Thread类的子类的实例,即创建了线程对象;

3.    用线程对象的start方法来启动线程。

代码示例:

//通过继承Thread类来创建线程类public class Test extends Thread{private int i ;//重写run方法,run方法的方法体就是线程执行体public void run(){for ( ; i < 20 ; i++ ){//当线程类继承Thread类时,可以直接调用getName()方法来返回当前线程的名。//如果想获取当前线程,直接使用this即可//Thread对象的getName返回当前该线程的名字System.out.println(getName() +  " " + i);}}    public static void main(String[] args)     {        for (int i = 0; i < 20;  i++)        {                        //调用Thread类的静态方法currentThread获取当前线程对象,实例的getName获得线程名System.out.println(Thread.currentThread().getName() +  " " + i);if (i == 6){//创建、并启动第一条线程new Test().start();//创建、并启动第二条线程new Test().start();}        }    }}


输出为:

main 0

main 1

main 2

main 3

main 4

main 5

main 6

Thread-0 0

Thread-0 1

Thread-0 2

Thread-0 3

Thread-0 4

Thread-0 5

Thread-0 6

Thread-0 7

Thread-0 8

Thread-0 9

Thread-0 10

Thread-0 11

Thread-0 12

Thread-0 13

Thread-0 14

Thread-0 15

Thread-0 16

Thread-0 17

Thread-0 18

Thread-0 19

main 7

main 8

main 9

main 10

main 11

main 12

main 13

main 14

main 15

main 16

main 17

main 18

main 19

Thread-1 0

Thread-1 1

Thread-1 2

Thread-1 3

Thread-1 4

Thread-1 5

Thread-1 6

Thread-1 7

Thread-1 8

Thread-1 9

Thread-1 10

Thread-1 11

Thread-1 12

Thread-1 13

Thread-1 14

Thread-1 15

Thread-1 16

Thread-1 17

Thread-1 18

Thread-1 19

 

一、    实现runnable接口创建线程类

1.    定义runnable接口的实现类,重写该接口的run方法;

2.    创建runnable实现类的实例,并以此实例作为Threadtarget来创建Thread对象,该Thread对象才是真正的线程对象。

3.    用线程对象的start方法来启动线程。

实例代码:

//通过实现Runnable接口来创建线程类public class Test implements Runnable{private int i ;//run方法同样是线程执行体public void run(){for ( ; i < 100 ; i++ ){//当线程类实现Runnable接口时,//如果想获取当前线程,只能用Thread.currentThread()方法。System.out.println(Thread.currentThread().getName() + "  " + i);}}    public static void main(String[] args)     {        for (int i = 0; i < 100;  i++)        {System.out.println(Thread.currentThread().getName() + "  " + i);if (i == 20){Test st = new Test();//通过new Thread(target , name)方法创建新线程new Thread(st , "新线程1").start();new Thread(st , "新线程2").start();}        }    }}

从输出可以看到,两个线程的变量i的变化时连续的,也就是使用runnable接口的线程可以共享线程类的实例属性,因为在这种情况下,程序创建的runnable对象只是线程的target,而多条线程可以共享一个target,所以线程可以共享线程类的实例属性(实际上是线程的target类)。

 

 

 

 

原创粉丝点击