• 目录

线程与进程

阅读量: 434 编辑

线程与进程

一、线程与进程介绍

  • 一个进程中可以同时存在多个线程

  • 各个线程之间可以并发地执行

  • 各个线程之间可以共享地址空间。进程 = 线程 + 资源平台

二、Java创建线程

  • 通过继承 Thread 类来创建一个线程

  • 通过实现 Runnable 接口来创建一个线程

  • Thread的构造器

    • Thread()

    • Thread(String name)

    • Thread(Runnable target)

    • Thread(Runnable target, String name)

    • Thread(ThreadGroup group, Runnable target)

    • Thread(ThreadGroup group, String name)

三、线程的启动

  • 使用 start() 方法,线程进入 Runnable(可运行) 状态,它将向线程调度器注册这个线程

  • 不要直接在程序中调用线程的 run() 方法

四、两种线程创建方式的比较

  • 1、使用Runnable接口

    • 可以将代码和数据分开,形成清晰的模型

    • 还可以从其他类继承

    • 保持程序风格的一致性

  • 2、直接继承Thread类

    • 不能再从其他类继承

    • 编写简单,可以直接操纵线程

五、代码实战

代码的详细解读,可以参考视频教程

通过继承 Thread 类实现线程:MyThread.java

package com.qicong.gj.c29;

/**
 * User: 祁大聪
 */
public class MyThread extends Thread{

    MyThread(String name){
        super(name);
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + " 线程运行开始");
        System.out.println(Thread.currentThread().getName() + "线程运行结束");
    }

    public static void main(String[] args) {
        System.out.println("main 是一个进程,开始了");
        MyThread t1 = new MyThread("线程一 ");
        t1.start();

        MyThread t2 = new MyThread("线程二 ");
        t2.start();

        System.out.println("main 是一个进程,结束了");
    }
}

通过实现 Runnable 接口实现线程:RunThread.java

package com.qicong.gj.c29;

/**
 * User: 祁大聪
 */
public class RunThread implements Runnable{

    @Override
    public void run() {
        System.out.println("RunThread is running");
    }

    public static void main(String[] args) {
        RunThread t1 = new RunThread();
        Thread td = new Thread(t1);
        td.start();
    }
}

测试类:S29.java

package com.qicong.gj.c29;

/**
 * User: 祁大聪
 */
public class S29 {

    static Object obj;

    public static void main(String[] args) {
        System.out.println("进程开始");
        Thread t1 = new Thread();
        Thread t2 = new Thread();

        t1.start();
        t2.start();

        System.out.println("进程结束");
    }
}

  • 目录