1.实现多线程

 1.1进程

  进程:是正在运行的程序

  • 是系统进行资源分配和调用的独立单位
  • 每一个进程都有自己的内存和系统资源

 1.2线程

  进程中的单个顺序控制流,是一条执行路径

  • 单线程:一个进程只有一条执行路径//记事本程序
  • 多线程:一个进程有多条执行路径//扫雷

 1.3多线程的实现方式

  方式1:继承Thread类

  •   定义一个类MyThread extread Thread
  •   在Mythread中重写run()方法:run方法用来封装
  •   创建Mythread类对象
  •   使用start()启动线程,由JVM调用此线程的run()方法。
  •   代码实现:
package Threadpak;

public class MyThread extends Thread{
    @Override
    public void run(){
        for(int i = 0 ;i < 100;i++){
            System.out.println(i);
        }
    }
}


package Threadpak;

public class MyThreadDemo {
    public static void main(String[] args) {
        MyThread my1 = new MyThread();
        MyThread my2 = new MyThread();

        my1.start();
        my2.start();

    }

}

  

 

------------恢复内容开始------------

1.实现多线程

 1.1进程

  进程:是正在运行的程序

  • 是系统进行资源分配和调用的独立单位
  • 每一个进程都有自己的内存和系统资源

 1.2线程

  进程中的单个顺序控制流,是一条执行路径

  • 单线程:一个进程只有一条执行路径//记事本程序
  • 多线程:一个进程有多条执行路径//扫雷

 1.3多线程的实现方式

  方式1:继承Thread类

  •   定义一个类MyThread extread Thread
  •   在Mythread中重写run()方法:run方法用来封装
  •   创建Mythread类对象
  •   使用start()启动线程,由JVM调用此线程的run()方法。
  •   代码实现:
package Threadpak;

public class MyThread extends Thread{
    @Override
    public void run(){
        for(int i = 0 ;i < 100;i++){
            System.out.println(i);
        }
    }
}


package Threadpak;

public class MyThreadDemo {
    public static void main(String[] args) {
        MyThread my1 = new MyThread();
        MyThread my2 = new MyThread();

        my1.start();
        my2.start();

    }

}

  

 

1.4线程优先级【应用】

  线程调度的两种方式

  •   分时调度:所有线程轮流使用CPU,平均分配每个线程占用的CPU时间片
  •   抢占式调度:优先级高(1  >  2  >....>10)的线程使用CPU的概率越大,当优先级相同时,会随机选择一种;总体上看,优先级高的线程获取的时间片的相对较多一些。

    java是抢占式调度模型,具有随机性,线程只有得到CPU时间片,也 就是使用权,才可以执行指令。所以说多线程程序的执行是有随机  性,因为谁抢到CPU的使用权是不一定的。

  •   设置优先级
  1. 使用getPriority()返回当前线程的优先级
  2. 使用setPriority(int newPriority)设置优先级(默认为5,范围为1—10)

1.5线程控制【应用】

static void sleep(long millis) 使当前正在指向的线程停留指定的时间(ms)
void join() 等待这个线程死亡
void setDaemon(boolean on) 将线程设置为守护线程,当运行的线程都是守护线程时(主线程结束时),JVM将退出
package Threadpak;

public class MyThreadDemo {
    public static void main(String[] args) {
        MyThread my1 = new MyThread();
        MyThread my2 = new MyThread();
        MyThread my3 = new MyThread();
        my1.setName("java");

        my3.setName("python");

        Thread.currentThread().setName("c++");//设置主线程
        my1.setDaemon(true);
        my3.setDaemon(true);
        my1.start();
        my3.start();

       for(int i = 0 ;i < 10; i ++)
       {
           System.out.println(Thread.currentThread().getName() +  ":"+ i);
       }
    }

}

1.6线程的生命周期【理解】

  线程一共有5种状态,线程一直在各种状态之间转换。

 

 

Posted on 2022-06-12 11:32  LutixiaGit  阅读(26)  评论(0编辑  收藏  举报