文章转载自第一代码http://www.diyidaima.com/article/detail/jhyozdjp
首先我们需要理解什么是线程?线程是在进程中独立运行的子任务。
一.多线程的使用
在Java中,已经自带对多线程技术的支持,可以方便的实现多线程编程。实现多线程的方式主要有两种,一种是继承Thread类,另一种是实现Runnable接口。下面我们先来看看第一种。
1.继承Thread类
首先我们来看一下Thread类的结构:public class Thread implements Runnable.可以发现,Thread实现了Runnable接口,Thread和Runnable是多态关系。实际上,由于Java语言的特点是单根继承,所以使用继承Thread类的方式创建新线程时,就会有不支持多继承的缺点。所以为了支持多继承,可以实现Runnable接口的方式,边实现边继承。而这两种方法实际上没有本质的区别。 我们先来看看第一个实例: //自定义线程类MyThread public class MyThread extends Thread{ @Override public void run(){ super.run(); System.out.println("MyThread"); } } //运行类Run public class Run { public static void main(String[] args){ MyThread mythread=new MyThread(); mythread.start(); System.out.println("运行结束!"); } }运行结果:
运行结束! MyThread从上面的运行结果可以知道,MyThread.java类中的run方法执行的时间比较晚,这说明在使用多线程技术时,代码的运行结果与代码的执行顺序或调用顺序是没有关系的。这说明线程的调用具有随机性。
注意:如果多次调用start()方法,则会出现Exception in thread “main” java.lang.IllegalThreadStateException异常。
2.实现Runnable接口
有这样一种情况,当想创建的线程类已经有了一个父类了,而Java又不支持多继承,所以就不能再继承Thread类了,这个时候就可以使用第二种方式实现多线程。下面我们来看看一个实例:
//创建一个实现Runnable接口的类MyRunnable public class MyRunnable implements Rinnable{ @Override public void run(){ System.out.println("运行中!"); } }那现在我们如何使用这个MyRunnable类呢?我们知道,Thread有多个构造方法(8个)其中有两个构造方法Thread(Runnable r)和Thread(Runnable r,String name)可以传递Runnable接口,说明我们可以创建一个MyRunnable类的对象并传入其中。
//运行类Run public class Run{ public static void main(String[] args){ Runnable runnable=new MyRunnable(); Thread thread=new Thread(runnable); thread.start(); System.out.println("运行结束!"); } }运行结果如下:
运行结束! 运行中总结:通过上面的两个实例,我们初步掌握了线程以及如何使用线程。
更多详情可以查看原文http://www.diyidaima.com/article/detail/jhyozdjp