两种实现线程方法:
1、继承java.lang.Thread
package com.zbj.thread;
/**
* 创建thread两步法:
* 1、定义类继承java.lang.Thread类
* 2、重新run()方法
*
* 调用thread步骤:
* 1、实例化线程对象 ,如MyThread01 t=new MyThread01();
* 2、调用线程对象的start(),如t.start()
* @author Administrator
*
*/
public class MyThread01 extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("我的线程开始跑了:" + i);
}
}
public static void main(String[] args) {
MyThread01 mt1 = new MyThread01();
mt1.start();
}
}
2、实现Runnable接口
package com.zbj.thread;
/**
* 创建Runnable线程两步法
* 1、实现Runnable接口
* 2、重写run方法
*
*
* 调用runnable线程步骤:
* 1、实例化线程对象 ,如MyThread01 t=new MyThread01(); Thread tt=new Thread(t);
* 2、调用线程对象的start(),如tt.start()
* @author Administrator
*
*/
public class MyThread02 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("我的线程开始跑了:" + i);
}
}
public static void main(String[] args) {
MyThread02 thread = new MyThread02();
new Thread(thread).start();
}
}
3、两者的区别
实现runnable接口可以实现资源共享,而 extends Thread则不行。
package com.zbj.thread;
public class MyThread03 implements Runnable {
private int ticket = 10;
public void run() {
for (int i = 0; i < 20; i++) {
if (this.ticket > 0) {
System.out.println( "卖票:ticket" + this.ticket--);
}
}
}
public static void main(String[] args) {
MyThread03 thread = new MyThread03();
new Thread(thread).start();
new Thread(thread).start();
new Thread(thread).start();
//继承Thread的线程这样调用会报错。
}
}