1,java中线程的创建可以有两种方法:1、继承Thread类 2、实现Runnable接口
两者区别:
(1)、继承Thread类创建线程的方法, 在继承了Thread类之后, 不能再继承其他的方法, (在java中支持单继承),这样灵活性就不如实现Runnable接口来创建线程的方法了;
(2)、使用实现Runnable接口来创建线程可以达到资源共享!(继承Thread类创建线程也可以实现资源共享,但是比较的麻烦。)
在我们创建线程的时候都会优先采用实现Runnable接口的方法。
[java]
package com.thread;
public class TestThread2 {
/**
* @param args
*/
public static void main(String[] args) {
Runner r = new Runner();
r.start();
for(int i=0; i<100; i++) {
System.out.println("Main Thread:------" + i);
}
}
}
class Runner extends Thread {
public void run() {
for(int i=0; i<100; i++) {
System.out.println("Runner1 :" + i);
}
}
}
[java]
package com.thread;
public class TestThread3 {
/** 优先考虑的方式。
* @param args
*/
public static void main(String[] args) {
Runner2 r = new Runner2();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
class Runner2 implements Runnable{
@Override
public void run() {
for(int i=0;i<30;i++){
System.out.println("No:" + i);
}
}
}

[java]
package com.itm.thread;
public class TraditionalThread {
/**
* @param args
*/
public static void main(String[] args) {
Thread thread = new Thread() {
@Override
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("1 " + Thread.currentThread().getName());
System.out.println("2 " + this.getName());
}
}
};
thread.start();
Thread thread2 = new Thread(new Runnable(){
@Override
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("1 " + Thread.currentThread().getName());
// this 就不代表线程了。因为在 Runnable 对象里面。
// System.out.println("2" + this.getName());
}
}
});
thread2.start();
/********************************************************************************
*
* 注释源码说明:利用了 面向对象的 覆盖技术。
*
*
* 调用 start()方法,start()方法 会找 当前对象的run()方法
* (1) 如果自己没有 就找父类中的run()方法。
* 父类的run()方法 会找 Runnable。
* (2) 如果 自己有 run()方法,就把 父类的覆盖了。
*
*
*/
new Thread(
new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (Interru