1.进程是多个线程的集合,进程是执行中的程序
2.在进程中一定有个线程叫主线程,控制代码执行顺序
3.线程 :线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的实际运作单位,线程是进程的执行路径
4.多线程为了提高程序的效率,每个线程互不影响,每个线程独立运行
5.多线程并不是提高宽带速度而只是提高程序效率
6.单核CPU执行多线程不会出现阻塞,CPU切换时间非常短
7.多线程应用场景:多线程下载、ajax异步上传、爬虫、
创建线程的方式
1)继承Thread类方式,
继承Thread类重写run方法,
如何调用?先new一下线程类,将它实例化。
启动线程类不是调用run方法,而是调用start方法
Class CreateThreadDemo01 extends Thread{
//run方法就是县城需要执行的任务、需要执行的代码
@Override
Public void run(){
for(int i=0;i<30;i++){
System.out.println("runi:"+i);
}
}
}
Public class ThreadDemo01{
Public static void main(String[] args){
//1.调用线程类
CreateThreadDemo01 demo01=new CreateThreadDemo01();
//启动线程类不是调用run方法,而是调用start方法
demo01.start();
for(int i=0;i<30;i++){
System.out.println("miani:"+i);
}
}
}
2)使用runable接口方式
先声明Runbale接口
如何调用?先new一下线程类,将它实例化。然后new一个thread接口,把线程类放入该接口
然后thread.start();
Class CreateThreadDemo02 implements Runnable{
//run方法就是县城需要执行的任务、需要执行的代码
@Override
Public void run(){
for(int i=0;i<30;i++){
System.out.println("子线程runi:"+i);
}
}
}
Public class ThreadDemo02{
Public static void main(String[] args){
//1.调用线程类
CreateThreadDemo02 demo02=new CreateThreadDemo02();
Thread thread=new Thread(demo02);
thread.start();
for(int i=0;i<30;i++){
System.out.println("miani:"+i);
}
}
}
问?使用继承方式创建线程好,还是使用runable接口好?
开发都是面向接口编程。使用继承只能继承一次,使用接口可以声明多个接口
拓展:
①extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承。
②java中不支持多重继承,继承只能继承一个类。但implements可以实现多个接口,用逗号分开就行了。
3)使用匿名内部类方式(使用不多)
什么是匿名内部类?内部类:将一个类直接定义在另一个类或者方法里面
Public class ThreadDemo03{
Public static void main(String[]args){
Thread thread=new Thread(new Runnable(){
@Override
public void run(){
for(inti=0;i<30;i++){
System.out.println("run i:"+i);
}
}
});
thread.start();
for(int i=0;i<30;i++){
System.out.println("main i:"+i);
}
}
}



