1.进程 :
    (一)正在执行的程序称作为一个进程。 进程负责了内存空间的划分。

    (二)问题: windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗?

             从宏观的角度: windows确实是在同时运行多个应用程序。

             从微观角度: cpu是做了一个快速切换执行的动作,由于速度态度,所以我感觉不到在切换 而已。

2.线程:
     线程的优先级默认是5;
    (一)线程在一个进程 中负责了代码的执行,就是进程中一个执行路径,

    (二)多线程: 在一个进程中有多个线程同时在执行不同的任务。

    (三)提问 :a.代码的执行是线程负责的,那么他的执行过程?

                             运行任何一个java程序,jvm在运行的时候都会创建一个main线程执行main方法中所有代码。

                      b.一个java应用程序至少有几个线程?

                             至少有两个线程, 一个是主线程负责main方法代码的执行,一个是垃圾回收器线程,负责了回收垃圾。

     (四)多线程的好处:
              1.解决了一个进程能同时执行多个任务的问题。
              2. 提高了资源的利用率。

      (五)多线程 的弊端:
              1. 增加cpu的负担。
              2. 降低了一个进程中线程的执行概率。
              3. 引发了线程安全 问题。
              4. 出现了死锁现象。

    (六)如何创建多线程:

              a.创建线程的方式:

                    方式一:
                         1. 自定义一个类继承Thread类。
                         2. 重写Thread类的run方法 , 把自定义线程的任务代码写在run方法中
                         疑问: 重写run方法的目的是什么?
                                   每个线程都有自己的任务代码,jvm创建的主线程的任务代码就是main方法中的所有代码, 自定义                                    线程的任务代码就写在run方法中,自定义线程负责了run方法中代码。
                         3. 创建Thread的子类对象,并且调用start方法开启线程。

                              注意:一个线程一旦开启,那么线程就会执行run方法中的代码,run方法千万不能直接调用,直接调用                                       run方法就相当调用了一个普通的方法而已并没有开启新的线程。

                   方式二:推荐用这个因为java是单继承,多实现的;这就比较好了

                          1.自定义类实现Runnable接口的run方法

                          2.再通过创建Thread对象将实现Runable接口类作为实参传给Thread

                          3.线程在start()即可

public class test04 implements Runnable{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        test04 t=new test04();
        Thread b=new Thread(t,"小平");
        b.start();
        for(int i = 0 ; i < 10 ; i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }

}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案