Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。
1、继承Thread类实现多线程
继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:
- public class MyThread extends Thread {
- public void run() {
- System.out.println("MyThread.run()");
- }
- }
在合适的地方启动线程如下:
- MyThread myThread1 = new MyThread();
- MyThread myThread2 = new MyThread();
- myThread1.start();
- myThread2.start();
2、实现Runnable接口方式实现多线程
如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下:
- public class MyThread extends OtherClass implements Runnable {
- public void run() {
- System.out.println("MyThread.run()");
- }
- }
为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例:
- MyThread myThread = new MyThread();
- Thread thread = new Thread(myThread);
- thread.start();
事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:
- public void run() {
- if (target != null) {
- target.run();
- }
- }
而且Thread实现类也是实现的runnable接口
1 * 2 * @author unascribed 3 * @see Runnable 4 * @see Runtime#exit(int) 5 * @see #run() 6 * @see #stop() 7 * @since JDK1.0 8 */ 9 public 10 class Thread implements Runnable { 11 /* Make sure registerNatives is the first thingdoes. */ 12 private static native void registerNatives(); 13 static { 14 registerNatives(); 15 }
3、接下来我们再讲讲线程的优先级设置以及一些常用的属性设置
Thread thread = new Thread();
在这个类里我们可以设置线程的优先级
1 public class Test { 2 public static void main(String[] args) { 3 Thread t1 = new MyThread1(); 4 Thread t2 = new Thread(new MyRunnable()); 5 t1.setPriority(10); 6 t2.setPriority(1); 7 8 t2.start(); 9 t1.start(); 10 } 11 }
设置线程的名字和id还有超时时间等等
Java线程的优先级从1到10级别,值越大优先级越高
最后附上一个号连接
http://blog.csdn.net/aboy123/article/details/38307539