Java提供了两种多线程的实现方式:一种是继承Java.lang包中的Thread类,覆写了Thread类中的run()方法,在run()方法中实现运行在线程上的代码,一种是实现java.lang中的Runnable接口,同样在run()方法中实现运行在线程上的代码。
- public class Example
- {
- public static void main(String[] args)
- {
- MyThread mt = new MyThread();//创建一个Thread的线程对象。
- mt.start();//开启线程。
- while(ture)//通过循环语句打印输出
- {
- System.out.println("main()方法运行了");
- }
- }
- }
- class MyThread extends Thread
- {
- public void run()
- {
- while(ture)
- {
- System.out.println("run方法运行了");
- }
- }
- }
复制代码 以上代码继承了Thread类实现了多线程,但是这种方法有一定的局限性,因为在Java中只支持单继承,一个类继承了父类就无法在继承其他的类,为了克服这种弊端,Thread类提供了另外一个构造方法Thread(Runnable target),其中Runnable是一个接口,他就只有一个run()方法,当通过这个构造方法创建线程对象时,只需要该方法传递一个实现了Runnable接口的实例对象,这样创建的线程将调用实现了接口中的run()方法作为运行的代码,而不需要调用Therad类中的run()方法。所以以上代码是有局限性的。
- public class Example
- {
- public static void main(String[] args)
- {
- MyThread mt = new MyThread();//创建一个Thread的线程对象。
- Thread t = new Thread(MyThread);//创建线程对象。
- t.start();//开启线程。
- while(ture)//通过循环语句打印输出
- {
- System.out.println("main()方法运行了");
- }
- }
- }
- class MyThread implements Runnable
- {
- public void run()
- {
- while(ture)
- {
- System.out.println("run方法运行了");
- }
- }
- }
复制代码 以上代码实现了Runnable接口,并重写了Runnable接口中的run()方法,通过Thread类的构造函数将MyThread类的实例化对象作为参数传入,main()方法和run()方法中的打印语句都指向那个了。这样就实现了多线程。
|