多线程的两种创建方式
创建方式1:继承Thread类
public class Demo_thread {
/**
* 多线程技术
* 整个main方法是运行在main线程里的,也就是主线程
* 后面再开启的线程,都是它的分支线程
* @param args
*/
public static void main(String[] args) {
//Thread
MyThread m = new MyThread();
m.start();
//与上面的是并发执行的
for (int i=0; i<10 ; i++) {
System.out.println("曲项向天歌"+i);
}
}
}
/**
* 继承了Thread类的子类就是一个线程类
*/
public class MyThread extends Thread{
/**
* run方法就是线程要执行的任务方法
* */
@Override
public void run() {
//这里的代码就是一条新的执行路径
//这个执行路径的触发方式,不是调用run方法
//而是通过thread对象的start()方法,来启动任务。
for (int i=0; i<10 ; i++) {
System.out.println("鹅鹅鹅"+i);
}
//super.run();
}
}
运行结果:

可以看出,两个线程的执行未必是均匀交替进行的,因为Java执行的是抢占性分配。两个线程并发执行,谁先执行完、谁快,是不确定的,每次执行的结果可能都不一样。
注意:每个线程都拥有自己的栈空间,共用一份堆内存。在执行过程中,每个线程任务里调用的方法,也都会相应地在该线程中运行。主要的处理方法是,方法入栈,然后弹栈。
简便方法:使用匿名内部类
public class Demo_thread2 {
/**
* 继承Thread方式的简便方法。
*/

本文介绍了Java中创建多线程的三种方式:1) 继承Thread类,2) 实现Runnable接口,3) 实现Callable接口。通过实例展示了每种方式的运行结果和优缺点。Callable接口不同于Thread和Runnable,它能够返回执行结果并允许抛出异常。
最低0.47元/天 解锁文章





