searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

JAVA核心技术-多线程简单介绍

2023-08-28 08:27:46
4
0

多线程

运行在操作系统之上的每个应用程序,都会占用一个独立的进程(process),而进程内又允许运行多个线程(thread),这意味着一个程序可以同时执行多个任务的功能

在Java中实现多线程:Thread类,Runnable接口

在基于线程的多任务而处理环境中,线程是执行特定任务的可执行代码的最小单位;

 

多任务

当今的操作系统绝大部分都是基于多任务的操作系统;

多任务操作系统的最大特点,是可以同时运行多个程序;

由于操作系统支持时间片轮换算法,使得用户感觉多个程序在同时运行,似乎有多个CPU在起作用。

进程与线程的区别

进程是指系统中正在运行中的应用程序,它拥有自己独立的内存空间;

线程是指进程中一个执行流程,一个进程中允许同时启动多个线程,他们分别执行不同的任务;

线程与进程的主要区别在于:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中,这些线程可以共享数据,因此线程间的通信比较简单,消耗的系统开销也相对较小。

线程状态

新建状态(New):使用new关键字创建线程对象,仅仅被分配了内存;

就绪状态(Ready):线程对象被创建后,等待它的start方法被调用,以获得CPU的使用权;

运行状态(Running):执行run方法,此时的线程的对象正占用CPU;

睡眠状态(Sleeping):调用sleep方法,线程被暂停,睡眠时间结束后,线程回到就绪状态,睡眠状态的线程不占用CPU;

死亡状态(Dead):run方法执行完毕后,线程进入死亡状态;

阻塞状态(Blocked):线程由于某些事件(如等待键盘输入)放弃CPU,暂停运行,直到线程重新进入就绪状态,才有机会转到运行状态;

相关词汇说明

单    词

说    明

thread

线,线程

runnable

可追捕的,可猎取的

current

当前的,最近的

sleep

睡,睡眠

yield

屈服,屈从

interrupted

中断的,被阻止的

daemon

后台程序

wait

等待,等候

notify

通报

synchronized

同步的

 

 

Thread

主线程示例

public class MainThreadDemo {

    public static void main(String[] args) {

        //获得当前运行的线程

        Thread tMain = Thread.currentThread();

        System.out.println("当前运行的线程是:" + tMain);

        try {

            for (int i = 0; i < 5; i++) {

                System.out.println(i);

                Thread.sleep(2000);  //使当前线程休眠2秒

            }

        }

        catch (java.lang.InterruptedException ie) {

            ie.printStackTrace();

        }

    }

}

在Java中要实现线程,最简单的方式就是扩展Thread类,重写其中的run方法,方法原型如下:

  public void run()

如:

  public class MyThread extends Thread {

  public void run() {

  ……

  }

  }

Thread类中的run方法本身并不执行任何操作,如果我们重写了run方法,当线程启动时,它将执行run方法。

 

Runnable接口

java.lang.Runnable接口中仅仅只有一个抽象方法:

  public void run();

也可以通过实现Runnable接口的方式来实现线程,只需要实现其中的run方法即可;

Runnable接口的存在主要是为了解决Java中不允许多继承的问题;

使用Runnable接口可以使语法的自由度更高。

0条评论
作者已关闭评论
魏文浩
5文章数
0粉丝数
魏文浩
5 文章 | 0 粉丝
原创

JAVA核心技术-多线程简单介绍

2023-08-28 08:27:46
4
0

多线程

运行在操作系统之上的每个应用程序,都会占用一个独立的进程(process),而进程内又允许运行多个线程(thread),这意味着一个程序可以同时执行多个任务的功能

在Java中实现多线程:Thread类,Runnable接口

在基于线程的多任务而处理环境中,线程是执行特定任务的可执行代码的最小单位;

 

多任务

当今的操作系统绝大部分都是基于多任务的操作系统;

多任务操作系统的最大特点,是可以同时运行多个程序;

由于操作系统支持时间片轮换算法,使得用户感觉多个程序在同时运行,似乎有多个CPU在起作用。

进程与线程的区别

进程是指系统中正在运行中的应用程序,它拥有自己独立的内存空间;

线程是指进程中一个执行流程,一个进程中允许同时启动多个线程,他们分别执行不同的任务;

线程与进程的主要区别在于:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中,这些线程可以共享数据,因此线程间的通信比较简单,消耗的系统开销也相对较小。

线程状态

新建状态(New):使用new关键字创建线程对象,仅仅被分配了内存;

就绪状态(Ready):线程对象被创建后,等待它的start方法被调用,以获得CPU的使用权;

运行状态(Running):执行run方法,此时的线程的对象正占用CPU;

睡眠状态(Sleeping):调用sleep方法,线程被暂停,睡眠时间结束后,线程回到就绪状态,睡眠状态的线程不占用CPU;

死亡状态(Dead):run方法执行完毕后,线程进入死亡状态;

阻塞状态(Blocked):线程由于某些事件(如等待键盘输入)放弃CPU,暂停运行,直到线程重新进入就绪状态,才有机会转到运行状态;

相关词汇说明

单    词

说    明

thread

线,线程

runnable

可追捕的,可猎取的

current

当前的,最近的

sleep

睡,睡眠

yield

屈服,屈从

interrupted

中断的,被阻止的

daemon

后台程序

wait

等待,等候

notify

通报

synchronized

同步的

 

 

Thread

主线程示例

public class MainThreadDemo {

    public static void main(String[] args) {

        //获得当前运行的线程

        Thread tMain = Thread.currentThread();

        System.out.println("当前运行的线程是:" + tMain);

        try {

            for (int i = 0; i < 5; i++) {

                System.out.println(i);

                Thread.sleep(2000);  //使当前线程休眠2秒

            }

        }

        catch (java.lang.InterruptedException ie) {

            ie.printStackTrace();

        }

    }

}

在Java中要实现线程,最简单的方式就是扩展Thread类,重写其中的run方法,方法原型如下:

  public void run()

如:

  public class MyThread extends Thread {

  public void run() {

  ……

  }

  }

Thread类中的run方法本身并不执行任何操作,如果我们重写了run方法,当线程启动时,它将执行run方法。

 

Runnable接口

java.lang.Runnable接口中仅仅只有一个抽象方法:

  public void run();

也可以通过实现Runnable接口的方式来实现线程,只需要实现其中的run方法即可;

Runnable接口的存在主要是为了解决Java中不允许多继承的问题;

使用Runnable接口可以使语法的自由度更高。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0