什么是多线程
如果在一个进程中同时运行了多个线程,用来完成不同的工作,则成为“多线程”
多个线程交替占用CPU资源,而非真正的并行执行
多线程好处
充分利用CPU资源
简化变成模型
带来良好的用户体验
Thread类
Priority 优先级
主线程
Main()方法即为主线程入口
产生其他子线程的线程
必须最后完成执行,因为他执行各种关闭动作
静态方法,返回的是Thread对象,通过对象对当前主线程进行操作,获取主线程名字,或者重新设置主线程的名字
public static void main(String args[]){
Thread t = Thread.currentThread();
System.out.println(“当前线程是:”+t.getName());
t.setName(“MyJavaThread”);
System.out.println(“当前线程名是”+t.getName());
}
定义MyThread类继承Thread类
重写run()方法,编写线程执行体
创建线程对象,调用Start()方法启动线程
实例 实现输出100之内的整数
//继承Thread类的方式创建线程
public class MyThread extends Thread{
//重写run方法
public void run(){
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+”:”+i);
}
}
}
测试类
public class TestMyThread {
public static void main(String[] args) {
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
t1.start();//启动线程
t2.start();//t1 t2同时进行
/*t1.run();//如果直接用run()方法那么只有主线程一条路径
t2.run();//一次调用了两次run()方法
*/ }
}
定义MyRunnable类实现Runnable接口
实现run()方法,编写线程执行体
创建线程对象,调用Start()方法启动编程
继承Thread类
编写简单,可直接操作线程
适用于单根继承
实现Runnable接口
避免单继承局限性
便于贡献资源
推荐使用实现Runnable接口方式创建线程
创建线程有哪几种方式
继承Thread类
实现Runnable接口
启动线程
Start()方法
线程对象调用strat()方法和调用run()方法的区别
Run():只有主线程一条执行路径
Start():多条执行路径,主线程和子线程并行交替执行