一、进程
进程:进程是计算机中的程序关于某数据集合上的一次运行活动
1.进程的执行过程是线状的,尽管中间会发生中断或暂停,但该进程所拥有的资源只为该线状执行过程服务。进程是整个现代操作系统的根本,操作系統是以进程为单位执行任务。
2.是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
3.每个进程都有其自己的内存空间和系统资源
4.一个进程可以有多个线程
二、线程
线程:进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。
1.单线程:一个进程中只有一个线程
2.多线程:一个进程中同时存在多个线程
三、多线程的实现方式
方式一:继承Thread类
1.定义一个MyThread继承Thread类
2.在MyThread类中重写run()方法
3.创建MyThread类的对象
4.启动线程
MyThread类
public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i=0;i<100;i++){
            System.out.println(i);
        }
    }
}
测试类
public class MyThreadDemo01 {
    public static void main(String[] args) {
        MyThread mt1=new MyThread();
        MyThread mt2=new MyThread();
        //void start()导致此线程开始执行;Java虚拟机调用此线程的run方法
        mt1.start();
        mt2.start();
    }
}
问题1:问什么要重写run()方法?
因为run()方法是用来封装被线程执行的代码
问题二:run()方法于start()方法的区别?
run():封装线程执行的代码,直接调用,相当于普通方法的调用
start():启动线程,由JVM调用此线程的run()方法
四、设置和获取线程名称
Thread类中设置和获取线程名称的方法
设置线程名称:void setName(String name):将此线程的名称更改为等于参数name
获取线程名称:void getName():返回此线程的名称
可以使用无参构造或者带参构造两种方式,带参构造需要创建带参构造方法调用父类的方法
MyTread类
public class MyThread extends Thread{
    //无参构造
    public MyThread(){}
    //带参构造
    public MyThread(String name){
        super(name);
    }
    @Override
    public void run() {
        for (int i=0;i<100;i++){
            //使用getName()获取线程名称
            System.out.println(getName()+":"+i);
        }
    }
}
测试类
/*启动多线程
方式一:继承Thread类
1.定义一个MyThread继承Thread类
2.在MyThread类中重写run()方法
3.创建MyThread类的对象
4.启动线程
* */
public class MyThreadDemo01 {
    public static void main(String[] args) {
        MyThread mt1=new MyThread();
        MyThread mt2=new MyThread();
        //void start()导致此线程开始执行;Java虚拟机调用此线程的run方法
        //使用setName()设置线程名称
        mt1.setName("一");
        mt2.setName("二");
        //方式二 使用带参构造进行
        MyThread mt3=new MyThread("三");
        MyThread mt4=new MyThread("四");//报错是因为MyThread类中没有带参构造,需要加进去
        mt1.start();
        mt2.start();
        mt3.start();
        mt4.start();
    }
}
static Thread currentThread()方法:返回对当前正在执行的线程对象的引用
     //static Thread currentThread()方法:返回对当前正在执行的线程对象的引用
        System.out.println(Thread.currentThread().getName());
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号