实例带你学会简单的Java Thread多线程

前言

在学习本教程之前,你对以下知识有所了解:

  • Java的类、方法、变量
  • extend的用法和用处
  • Java实例化

本篇教程难度:★☆☆☆☆

多线程是计算机的灵魂,目的是为了同时做很多事情

你可能不知道,早期的操作系统一次只能运行一个程序,如果要切换程序,必须关闭当前程序,早期的iPhone便是如此。

拷贝

废话少说,在你的IDE中新建一个Java项目或类用于存放本次多线程的代码。
我建议将类命名为:ThreadDemo,这样在拷贝代码后不需要修改类名。

复制下方代码到你的类中:

1import java.text.SimpleDateFormat; 2import java.util.Date; 3 4public class ThreadDemo { 5 public static void main(String[] args) { 6 //实例化当前类 7 ThreadDemo threadDemo = new ThreadDemo(); 8 //调用动态类 9 threadDemo.run(); 10 } 11 12 public void run() { 13 ThreadTest1 threadTest1 = new ThreadTest1(); 14 threadTest1.run(); 15 threadTest1.run(); 16 threadTest1.run(); 17 threadTest1.run(); 18 threadTest1.run(); 19 } 20} 21 22/** 23 * 线程1 24 */ 25class ThreadTest1 extends Thread { 26 @Override 27 public void run() { 28 //获取当前时间 29 Date day = new Date(); 30 SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒SSS毫秒"); 31 //打印当前时间 32 System.out.println("现在是:" + df.format(day)); 33 } 34}

让我们分开理解

线程类

1class ThreadTest1 extends Thread { 2 @Override 3 public void run() { 4 //获取当前时间 5 Date day = new Date(); 6 SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒SSS毫秒"); 7 //打印当前时间 8 System.out.println("现在是:" + df.format(day)); 9 } 10}

该类继承了Thread多线程类,所以这个类就支持多线程了~
该类中的方法:

1 @Override 2 public void run() { 3 //获取当前时间 4 Date day = new Date(); 5 SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒SSS毫秒"); 6 //打印当前时间 7 System.out.println("现在是:" + df.format(day)); 8 }

下方知识如果不理解可以直接跳过,在未来的学习中你自然会懂:
@Override 在本文表示对extend的Thread类的run()方法进行重写
run()方法是线程运行的方法,其中的方法完全由你来定义;

你需要知道的
你可以自由修改run()方法里面所有的内容,它将在接收到执行命令时被执行。

执行方法

1 public static void main(String[] args) { 2 //实例化当前类 3 ThreadDemo threadDemo = new ThreadDemo(); 4 //调用动态类 5 threadDemo.run(); 6 } 7 8 public void run() { 9 ThreadTest1 threadTest1 = new ThreadTest1(); 10 threadTest1.run(); 11 threadTest1.run(); 12 threadTest1.run(); 13 threadTest1.run(); 14 threadTest1.run(); 15 }

首先主方法里面的代码是用来执行run()方法的。这么写的原因是因为主方法是静态方法,使其调用一个动态方法的原因是动态方法更加灵活,因此你可以无视主方法,直接阅读run()方法。
注意:此处的run()方法和ThreadTest类中的run()方法不是同一个方法。

继续看:

1 ThreadTest1 threadTest1 = new ThreadTest1(); 2 threadTest1.run(); 3 threadTest1.run(); 4 threadTest1.run(); 5 threadTest1.run(); 6 threadTest1.run();

在该方法中,我们将ThreadTest类进行实例化,这样我们就能执行这个线程了。并且我们将该线程执行了5次。

运行!

现在,运行主方法,你会得到如下结果:

1现在是:2019年03月16日 12点21分20秒685毫秒 2现在是:2019年03月16日 12点21分20秒743毫秒 3现在是:2019年03月16日 12点21分20秒744毫秒 4现在是:2019年03月16日 12点21分20秒744毫秒 5现在是:2019年03月16日 12点21分20秒744毫秒

可以看到,我们成功执行了五个线程,并得到了预期的运行结果。

疑问

? 为什么多线程执行后的结果,毫秒不相同?
! 仔细看你会发现,这五次的多线程执行后的时间是由小到大的,所以线程被提交是有间隔时间并且是被顺序执行的。

后语

这是多线程的基本使用,如果需要继续了解线程池的知识,请点这里

# Java  Coding 

如转载请在文章尾部添加

原作者来自 adlered 个人技术博客:https://www.stackoverflow.wiki/

评论

  1. #1576740959297

    nice

  2. ❤️️

  3. 之前对多线程很有迷惑,现在看了你的文章之后大有收获👍 {>_<}

取消