java 多线程

Posted SamWeb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 多线程相关的知识,希望对你有一定的参考价值。

  在了解线程之前,要先了解进程,进程,就是正在运行中的程序,你可能已经见过进程。按ctrl +alt + del 启动任务管理器,它有一个选项卡就是进程,点击一下,确实是电脑中正在运程的程序。当一个应用程序启动后,比如QQ, 它就会在内存中开辟一片空间,这片空间就是进程。启动后,程序就要进行执行,执行的就是线程。线程就是进程中控制程序执行的一个控制单元。线程只是一片内存中的空间,它不负责程序执行。负责程序执行的是线程。一个进程中可以有多个线程,这就叫多线程。360安全卫士就是一个多线程。当我们启动360以后,它就会在内存中开发辟一片空间,Windows 资源管理器中多了360,但它什么都没有做,仅仅是启动了一个程序。 当我点击立即体验时,可以看到正在体验,这时再点击电脑清理,它会发现电脑正在进行清理,这两个功能在同时执行,但是都在一个程序中,这两个功能就是线程,我们可以同时启动多个线程。线程是负责程序执行。多线程的启动,就是为了运行各自的内容,这个内容可以称之为多线程执行的任务。

  多线程,其实是cpu在各个程序的各个线程中进行快速的切换,执行代码,由于切换非常快,给我们错觉是各个程序在同时执行。如果太多的多线程在同时执行,cpu在各个线程中来回切换的频率就会变小,电脑有时就很卡。 一个解决办法,就是增加cpu,这就是电脑2核,4核的由来。一个核执行一个程序,那就是真正同时运行。但是如果开多个程序,还是有问题。因为一个是内存不足,二是,线程切换确实消耗资源。这也是多线程的弊端。

   java 中创建多线程要用到Thread类,并且它的步骤如下

  1, 定义一个子类继承Thread 类

  2,覆盖Thread 类的run 方法。我们开启线程的目的就是执行一段代码,一个任务,我们定义了线程,如果它没有任务执行,也没有什么用。线程 执行的任务就是写在run 方法中。我们开启这个线程要做什么事情,就写到定义的子类的run方法中。

  3,创建子类的对象

  4,调用对象的start的方法 开启线程,调用run方法,执行任务

public class ComputeArea {
    public static void main(String[] args) {
        
        // 利用ChildThread子类创建子类对象
        ChildThread c1 = new ChildThread("firstThread");
        ChildThread c2 = new ChildThread("second");
        
        // 调用子类对象的start方法开启线程,执行任务
        c1.start();
        c2.start();
    }

}
// 定义一个子类 继承Thread 类
class ChildThread extends Thread {
    
    private String name;
    
    public ChildThread(String name) {
        this.name = name;
    }
//    复写Thread 类的run方法, 在run方法中定义线程要执行的任务
    public void run() {
        for (int i = 0; i < 10000; i++) {
            if (i % 100 == 0) {
                System.out.println(name);
            }
        }
    }
}

  开启多线程之后,我们怎么才能知道当前执行线程是哪个线程? Thread 类提供了一个静态方法currentThread() 就是返回当前执行线程的引用,再调用getName()方法,就可以获取到。把上面的System.out改成下面代码

System.out.println(name + Thread.currentThread().getName());

 

以上是关于java 多线程的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程与并发库高级应用-工具类介绍

多线程 Thread 线程同步 synchronized

Java多线程具体解释

自己开发的在线视频下载工具,基于Java多线程

什么是JAVA的多线程?

多个用户访问同一段代码