这篇博客主要简单介绍线程的三种创建方式。适合刚开始学习线程的同学参考
第一种方式:继承Thread类,重写run方法
代码如下:
package main.thread_demo;
class CreatThreadDemo extends Thread{
/**
* run方法就是线程需要执行的任务或者执行的代码
*/
@Override
public void run() {
for(int i=0;i<30;i++){
System.out.println("run i:"+i);
}
}
}
public class ThreadDemo {
/**
* 什么是进程:进程就是正在执行的应用程序,进程是线程的集合
* 什么是线程:线程就是一条执行路径,一个独立的单元
* 什么是多线程:就是为了提高程序效率
* 创建线程有哪些方式?
* 1.使用继承Thread类
* 2.使用实现runlabe接口方式
* 3.使用匿名内部类
*/
public static void main(String[] args) {
CreatThreadDemo t1=new CreatThreadDemo();
//2.启动线程 不是调用run方法,而是调用start方法
//3.开启多线程后,代码不会从上向下执行
t1.start();
for(int i=0;i<30;i++){
System.out.println("main i:"+i);
}
}
}
第二种方式:实现Runnable接口,重写run方法
代码如下:
package main.thread_demo;
class CreatThreadDemo02 implements Runnable{
/**
* run方法就是线程需要执行的任务或者执行的代码
*/
public void run() {
for(int i=0;i<30;i++){
System.out.println("子线程 i:"+i);
}
}
}
/**
* 什么是进程:进程就是正在执行的应用程序,进程是线程的集合
* 什么是线程:线程就是一条执行路径,一个独立的单元
* 什么是多线程:就是为了提高程序效率
* 创建线程有哪些方式?
* 1.使用继承Thread类
* 2.使用实现runlabe接口方式
* 3.使用匿名内部类
*/
public class ThreadDemo02 {
public static void main(String[] args) {
CreatThreadDemo02 t1=new CreatThreadDemo02();
//2.启动线程 不是调用run方法,而是调用start方法
//3.开启多线程后,代码不会从上向下执行
Thread thread=new Thread(t1);
thread.start();
for(int i=0;i<30;i++){
System.out.println("主线程 i:"+i);
}
}
}
第三种方式:使用匿名内部类的方式
代码如下:
package main.thread_demo;
/**
* 什么是进程:进程就是正在执行的应用程序,进程是线程的集合
* 什么是线程:线程就是一条执行路径,一个独立的单元
* 什么是多线程:就是为了提高程序效率
* 创建线程有哪些方式?
* 1.使用继承Thread类
* 2.使用实现runlabe接口方式
* 3.使用匿名内部类
*/
public class ThreadDemo03 {
public static void main(String[] args) {
//什么是匿名内部类
Thread t1= new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<30;i++){
System.out.println("子线程 i:"+i);
}
}
});
t1.start();
for(int i=0;i<30;i++){
System.out.println("主线程 i:"+i);
}
}
}
注意事项:
一、使用继承Thread类还是使用实现Runnable接口好?
答:肯定是使用实现Runnable接口的方法好。原因是:1.java编程是面向接口编程。2.实现了接口可以继续继承,但继承了类就不能够在继承了。
二、启动线程是使用调用start方法还是run方法?
答:开启线程是调用start()方法,而不是调用run()方法。
#第一次写博客,肯定写的文笔比较笨重。比较紧张,写的东西也比较少,如果那里有错误欢迎大家指出。内容较为简单,仅供初学者参考。谢谢大家!