多线程(一)

一.什么是线程

一个线程就是一个执行流,多个线程就是多个执行流,多线程就是让多个执行流分别执行自己的代码。

比如:利用多线程在控制台上循环交替打印A和B

package demo;
public class Main {
    static class SubThread extends Thread{
        @Override
        public void run() {

             while(true){
                 System.out.println("A");
             }
        }
    }
    public static void main(String[] args) {

        SubThread subThread=new SubThread();
        subThread.start();;
        
        while(true){
            System.out.println("B");
        }
    }
}

 在上面的代码中,有两个执行流,一个循环打印A,一个循环打印B,执行结果如下:

多线程(一)_第1张图片

 

二.线程的特点与优势

多线程能够实现并发编程,但多进程也能实现并发编程,但是多线程它主要有以下的优点与优势:

1.线程比进程更加的轻量级

2.创建线程比创建进程更快

3.调度线程比调度进程更快

4.销毁线程比销毁进程更快

三.线程与进程的关系与区别

1.线程是比进程更加的轻量级的

2.一个进程里包含一个或多个线程,且一个进程里至少包含一个线程(必须有主线程)

3.一个线程只能属于一个进程

4.进程与进程之间不能共享内存空间,线程与线程之间可以共享内存空间

5.进程是操作系统分配资源的最小单位,线程是操作系统调度的最小单位

操作系统:操作系统本质上是一个软件,一个专门用来管理的软件。

对下:管理硬件设备

对上:管理应用程序和其他软件

四.创建线程的五种方式

1.直接继承Thread线程类,重写run方法

package demo;
//直接继承线程类
public class MyTread01 extends  Thread{
    @Override
    public void run() {

        while(true){
            System.out.println("A");
        }
    }
    public static void main(String[] args) {

        MyTread01 myTread01=new MyTread01();
        myTread01.start();
    }
}

2.实现Runnable接口

实现Runnable接口并重写run方法

package demo;
//实现Runnable接口并重写run方法
public class MyTask implements Runnable{

    @Override
    public void run() {
        while(true){
            System.out.println("A");
        }
    }
    public static void main(String[] args) {
        Thread t=new Thread(new MyTask());
        t.start();
    }
}

3.匿名内部类创建Thraed子对象

package demo;
public class MyThread03 {
//匿名内部类创建Thread子对象
    public static void main(String[] args) {

        Thread t=new Thread(){
            @Override
            public void run() {
                while(true){
                    System.out.println("A");
                }
            }
        };
        t.start();
    }
}

4.匿名内部类创建Runnable子对象

package demo;
public class MyThread04 {
//匿名内部类创建Runnable子对象
    public static void main(String[] args) {

        Thread t=new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    System.out.println("A");
                }
            }
        });
        t.start();
    }
}

5.使用Lambda表达式创建匿名Thread子对象

package demo;
public class MyThread05 {
//使用lambda表达式创建Thread匿名子对象
    public static void main(String[] args) {

        Thread t=new Thread(()->{
            while(true){
                System.out.println("A");
            }
        });
        t.start();
    }
}

你可能感兴趣的:(java,开发语言)