java5编程(1)传统线程技术回顾(一)

2014-11-24 07:45:57 · 作者: · 浏览: 0

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