创建线程三种方式
1.继承方式创建线程
public class MyThread extends Thread{
@Override
public void run(){
for (int i = 0; i < 100; i++){
System.out.println("子线程第"+(i+1)+"次循环");
}
}
}
public class Test {
public static void main(String[] args){
MyThread mt = new MyThread();
mt.start();
for (int i = 0; i < 100; i++){
System.out.println("主线程第"+(i+1)+"次循环");
}
}
}
2.实现方式创建线程
public class MyRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++){
System.out.println("子线程第"+(i+1)+"次循环");
}
}
}
public class Test {
public static void main(String[] args){
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr);
for (int i = 0; i < 100; i++){
System.out.println("主线程第"+(i+1)+"次循环");
}
}
}
3.匿名内部类方式创建线程
public class Test{
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("子线程第"+(i+1)+"次循环");
}
}
});
t1.start();
for (int i = 0; i < 100; i++){
System.out.println("主线程第"+(i+1)+"次循环");
}
}
}
总结------------Thread和Runnable的区别
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runnable接口的话,则很容易的实现资源共享。
实现Runnable接口比继承Thread类所具有的优势:
1.可以避免java中的单继承的局限性
2.增加程序健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。
3.适合多个相同的程序代码的线程去共享同一个资源。
4.线程池只能放入实现Runnable或Callable类线程,不能直接放入继承Thread的类。