为了对自己所学进行巩固和记录,故在此记下,纯当个人笔记,如有不当,敬请指出,多谢。
1、继承Thread类,重写run方法后,调用start启动线程
class Thread1 extends Thread {
@Override
public void run() {
//在这里写你要在线程里执行的事
}
}
public class TestThread {
public static void main(String[] args) {
Thread1 t = new Thread1();//创建线程
t1.start();//启动线程
}
}
2、实现Runnable接口,重写run方法,然后通过new Thread(new Runnable接口重写类),再调用start启动线程。
class Thread2 implements Runnable {
@Override
public void run() {
//在这些你要在线程里执行的事
}
}
public class TestThread {
public void main(String[] args) {
Thread2 t = new Thread2();//实例化"实现了Runnable接口"的类
Thread thread = new Thread(t);//通过t创建线程
thread.start();//启动线程(注意,是通过Thread类的对象(即thread)启动,而不是通过"实现了Runnable接口"的类的对象(即t)启动)
}
}
3、从Java5开始,创建多线程多了如下一些线程池创建多线程的方式:
ExecutorService pool = Executors.newFixedThreadPool(3);
for(int i=0; i<10; i++) {
pool.execute(new Runnable() {
public void run() {
}
});
};
Executors.newCachedThreadPool().execute(new Runnable() {
public void run(){}
};
Executors.newSingleThreadExecutor().execute(new Runnable() {
public void run(){}
};
通过实现Runnable接口方式创建多线程是使用的是同一个Runnba,le实例,建立的多个线程之间的实例变量时共享的;而通过继承Thread类方式不能用同一个实例建立多个线程。所以实现Runnable接口方式更适合于资源共享,当然继承Thread类方式也可通过定义static类型变量来实现共享