线程的有关问题1

进程:任何正在执行的应用均为进程,

线程:是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。相对独立。

多线程:多个线程同时操作为多进程,cpu在主线程和其他线程之间相互切换,互不影响。

创建多线程的方法一:

1.01:构造一个类继承Thread类

1.02:重写run();

1.03:   创建一个对象(即创建一个子类)

1.04:   调用start();  开启线程并执行,同时告诉jvm,让它调用run();

//当线程的任务完成后释放线程。多线程执行时,在栈内存中,每一个执行线程都有自己的占内存空间,自动进行自己的压栈和出栈动作。执行线程结束了,线程自动在栈内存中释放;当所有的执行线程都结束了,进程就结束了。

问题一:为什么要这么做

    首先,继承Thread类中的run();因为Thread类描述线程事物,具备线程应有的功能.

那么,为什么我们不直接构造子类对象调用Start();例:

        Thread t=new Thread();

        t.start();//理论上来说,这可行。

        但是该start();调用的是Thread类中的run();而这个run();并没有我们需要的执行代码。所以需要重写run();形成run(可执行代码);并且构建子类对象调用它。

问题二:    创建线程的目的是什么?

       为了建立单独运行的执行路径,让多个功能代码同时执行,也就是线程创建并指向需要给定的代码(即线程的任务)。

问题三:     调用run();和调用start();的区别

      调用run();没有开启线程,仅仅是对象调用方法的行为。

      调用start();开启线程并且让jvm调用重写后的run();在线程中执行.

线程名称的获取(Thread.currentThread().getName();)

      用Thread类中的currentThread();//获取当前线程对象.怎么获取名称呢?

      使用getName();

对于自定义的线程:Thread-1.......;

多线程的异常信息

     线程中出现异常,必须标出该线程的名称。



        

猜你喜欢

转载自blog.csdn.net/qq_39059405/article/details/80378533
今日推荐