多线程01

1.什么是进程?

可以理解为正在进行的程序。更专业的解释是:(右键任务管理器)其实对应的是应用程序在内存中开辟的空间。一个程序一旦开辟空间就意味着它在运行。进程只是负责开辟空间,不直接执行。

2.什么是线程?

线程:负责执行,负责进程中程序执行的控制单元。(又叫执行路径,执行情景。)

注意:
(1)一个进程中不可能没有线程。可以同时有多个执行路径,称为多线程。     
(2)一个进程至少要有一个线程。
(3)开启多个线程是为了同时运行多个代码,每一个线程都有自己的内容,这个内容称为任务。
例子:360体检和垃圾清理同时进行

3.多线程的创建

 多线程的创建。线程就是执行代码的,并发就是同时。
 *创建线程步骤:
 1.一个类继承Thread类
 2.覆盖Thread类中的run方法
 3.直接创建Thread类的子类对象 
 4.调用start方法开启线程,并调用线程的任务run方法执行

代码1:


// 线程的使用
public class Class1 {

    public static void main(String[] args) {
        c1();
    }

    // Runnable接口方式
    public static void c2() {
        MyThread myThread = new MyThread();
        // 最后开启线程,调用start方法
        new Thread(myThread).start();

        for (int i = 1; i <= 10; i++) {
            System.out.println("Class1类:" + i);
        }

    }

    // Thread类方式
    public static void c1() {
        // 创建一个线程,实现方法一:继承Thread
        TestThread testThread = new TestThread();
        // 开启线程,调用线程的run()方法。
        testThread.start();

        for (int i = 1; i <= 10; i++) {
            System.out.println("Class1类:" + i);
        }

        // 重新开始线程,重新new。
        testThread = new TestThread();
        testThread.start();
    }
}

代码2:

// 线程优先级
public class Class2 {

    public static void main(String[] args) {

        ThreadA threadA = new ThreadA();
        ThreadB threadB = new ThreadB();

        threadA.setPriority(Thread.MAX_PRIORITY);
        threadB.setPriority(Thread.NORM_PRIORITY);

        threadA.start();
        threadB.start();

        System.out.println("main结束");

        if (threadA.isAlive()) {
            System.out.println("A线程运行");
        } else {
            System.out.println("A线程没有执行");
        }
    }

    private int age = 10;

    // 20
    public void testThis(int age) {
        this.age = age;
    }

    public static class ThreadA extends Thread {

        @Override
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println("A线程:" + i);
            }
        }
    }

    public static class ThreadB extends Thread {
        @Override
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println("B线程:" + i);
            }
        }
    }
}


你可能感兴趣的