iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何创建并运行一个java线程
  • 466
分享到

如何创建并运行一个java线程

java 2023-05-30 23:05:52 466人浏览 安东尼
摘要

这篇文章给大家分享的是有关如何创建并运行一个java线程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是进程呢?    进程是指运行中的应用程序,每个进程都有自己独立的地址空间(

这篇文章给大家分享的是有关如何创建并运行一个java线程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

什么是进程呢?

    进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左面的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。

要点:用户每启动一个进程,操作系统就会为该进程分配一个独立的内存空间。

线程--概念

在明白进程后,就比较容易理解线程的概念。

什么是线程呢

   是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。

Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。 可以用如下方式用java中创建一个线程:

Tread thread = new Thread();

执行该线程可以调用该线程的start()方法:

thread.start();

在上面的例子中,我们并没有为线程编写运行代码,因此调用该方法后线程就终止了。

编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。接下来我们会具体讲解这两种方法:

创建Thread的子类

创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。例子如下:

public class MyThread extends Thread {  public void run(){   System.out.println("MyThread running");  }}

可以用如下方式创建并运行上述Thread子类

MyThread myThread = new MyThread();myTread.start();

一旦线程启动后start方法就会立即返回,而不会等待到run方法执行完毕才返回。就好像run方法是在另外一个cpu上执行一样。当run方法执行后,将会打印出字符串MyThread running。

你也可以如下创建一个Thread的匿名子类:

Thread thread = new Thread(){  public void run(){   System.out.println("Thread Running");  }};thread.start();

当新的线程的run方法执行以后,计算机将会打印出字符串”Thread Running”。

实现Runnable接口

第二种编写线程执行代码的方式是新建一个实现了java.lang.Runnable接口的类的实例,实例中的方法可以被线程调用。

下面给出例子:

public class MyRunnable implements Runnable {  public void run(){  System.out.println("MyRunnable running");  }}

为了使线程能够执行run()方法,需要在Thread类的构造函数中传入 MyRunnable的实例对象。示例如下:

Thread thread = new Thread(new MyRunnable());thread.start();

当线程运行时,它将会调用实现了Runnable接口的run方法。上例中将会打印出”MyRunnable running”。

同样,也可以创建一个实现了Runnable接口的匿名类,如下所示:

Runnable myRunnable = new Runnable(){  public void run(){   System.out.println("Runnable running");  }}Thread thread = new Thread(myRunnable);thread.start();

创建子类还是实现Runnable接口?

对于这两种方式哪种好并没有一个确定的答案,它们都能满足要求。就我个人意见,我更倾向于实现Runnable接口这种方法。因为线程池可以有效的管理实现了Runnable接口的线程,如果线程池满了,新的线程就会排队等候执行,直到线程池空闲出来为止。而如果线程是通过实现Thread子类实现的,这将会复杂一些。

有时我们要同时融合实现Runnable接口和Thread子类两种方式。例如,实现了Thread子类的实例可以执行多个实现了Runnable接口的线程。一个典型的应用就是线程池。

常见错误:调用run()方法而非start()方法

创建并运行一个线程所犯的常见错误是调用线程的run()方法而非start()方法,如下所示:

Thread newThread = new Thread(MyRunnable());newThread.run(); //should be start();

起初你并不会感觉到有什么不妥,因为run()方法的确如你所愿的被调用了。但是,事实上,run()方法并非是由刚创建的新线程所执行的,而是被创建新线程的当前线程所执行了。也就是被执行上面两行代码的线程所执行的。想要让创建的新线程执行run()方法,必须调用新线程的start方法。

线程名

当创建一个线程的时候,可以给线程起一个名字。它有助于我们区分不同的线程。例如:如果有多个线程写入System.out,我们就能够通过线程名容易的找出是哪个线程正在输出。例子如下:

MyRunnable runnable = new MyRunnable();Thread thread = new Thread(runnable, "New Thread");thread.start();System.out.println(thread.getName());

需要注意的是,因为MyRunnable并非Thread的子类,所以MyRunnable类并没有getName()方法。可以通过以下方式得到当前线程的引用:

Thread.currentThread();

因此,通过如下代码可以得到当前线程的名字:

String threadName = Thread.currentThread().getName();

线程代码举例:

这里是一个小小的例子。首先输出执行main()方法线程名字。这个线程JVM分配的。然后开启10个线程,命名为1~10。每个线程输出自己的名字后就退出。

public class ThreadExample { public static void main(String[] args){   System.out.println(Thread.currentThread().getName());   for(int i=0; i<10; i++){     new Thread("" + i){      public void run(){       System.out.println("Thread: " + getName() + "running");      }     }.start();   } }}

感谢各位的阅读!关于“如何创建并运行一个java线程”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何创建并运行一个java线程

本文链接: https://www.lsjlt.com/news/221860.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何创建并运行一个java线程
    这篇文章给大家分享的是有关如何创建并运行一个java线程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是进程呢?    进程是指运行中的应用程序,每个进程都有自己独立的地址空间(...
    99+
    2023-05-30
    java
  • Java并发编程如何创建并运行线程
    这篇文章主要介绍“Java并发编程如何创建并运行线程”,在日常操作中,相信很多人在Java并发编程如何创建并运行线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java并发编程如何创建并运行线程”的疑惑有所...
    99+
    2023-06-29
  • 如何创建并运行第一个C#程序
    C#是一种由微软公司开发的面向对象的编程语言,广泛应用于Windows桌面应用程序、Web应用程序、游戏开发、移动应用程序等领域。C#提供了丰富的类和命名空间,可以帮助开发人员快速构建高质量的应用程序。要创建并运行第一个 C#序,您需要完成...
    99+
    2023-10-22
    创建C#程序
  • 【APITable】教程:创建并运行一个自建小程序
    1.进入APITable,在想要创建小程序的看板页面点击右上角的【小程序】,进入小程序编辑页面。    2.创建一个新的小程序区。  点击【+ 添加小程序】  点击创建小程序,选择模板,输入名字。    3.确定后进入小程序部署引...
    99+
    2023-09-07
    小程序
  • Java并发编程创建并运行线程的方法对比
    目录一、创建并运行线程的五种方法第一种:继承Thread类第二种:实现Runnable接口第三种:实现Callable接口第四种:线程池 + execute第五种:线程池 + sub...
    99+
    2024-04-02
  • 【Java】Eclipse如何创建java项目并运行
    前面Eclipse、JDK的安装与JDK环境变量配置好了之后,开始进行基本的使用 一、创建java项目并运行 先打开Eclipse IDE 2、创建项目 点击左上角的File—>New—>Proje...
    99+
    2023-09-30
    eclipse java
  • 怎么创建并运行第一个CSS3
    这篇“怎么创建并运行第一个CSS3”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么创建并...
    99+
    2024-04-02
  • 在eclipse中如何创建第一个javaweb项目并运行
    这篇文章主要介绍“在eclipse中如何创建第一个javaweb项目并运行”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“在eclipse中如何创建第一个javaweb项目并运行”文章能帮助大家解决问...
    99+
    2023-07-05
  • 怎么创建一个java线程
    本篇内容介绍了“怎么创建一个java线程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!手动创建线程有什么缺点? 不受控风险&nbs...
    99+
    2023-06-16
  • java多个线程运行如何停止
    在Java中,有几种常见的方法可以停止线程的运行: 使用标志变量:在线程的运行方法中,使用一个标志变量控制线程是否继续运行。当需要...
    99+
    2024-02-29
    java
  • 怎么在Java中创建一个线程
    今天就跟大家聊聊有关怎么在Java中创建一个线程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java中线程的创建有两种方式: 1.  通过继承Thread类,重...
    99+
    2023-05-31
    java 线程 ava
  • eclipse如何创建java项目并运行(详细教程讲解)
    Eclipse安装配置好之后,小千再来带大家进行基本的使用。 1. 创建项目 我们可以点击左上角的File-->New-->Project,这样就可以新建一个Java的项目了。也就是说,在Eclipse中,我们的Java项目会存放在work...
    99+
    2023-09-10
    java eclipse 开发语言
  • 手把手教你在eclipse创建第一个java web项目并运行
    目录1.下载eclipse2.解压后启动eclipse3.新建java web工程4. 添加一个jsp页面5. 运行项目总结为了能编写java web项目,建议安装支持javaee开...
    99+
    2023-02-21
    eclipse创建javaweb工程 eclipse怎么创建javaweb项目 eclipse运行javaweb
  • Java线程池如何创建
    本文小编为大家详细介绍“Java线程池如何创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java线程池如何创建”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。线程池的好处可以实现线程的复用,避免重新创建线程和...
    99+
    2023-06-29
  • 如何暂停一个正在运行的线程
    要暂停一个正在运行的线程,可以使用Thread类的`suspend()`方法将线程挂起,然后使用`resume()`方法恢复线程的执...
    99+
    2023-09-28
    线程
  • 如何在java中创建线程
    本篇文章为大家展示了如何在java中创建线程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4....
    99+
    2023-06-14
  • 100行Java代码构建一个线程池
    100行Java代码构建一个线程池[@more@]在现代的操作系统中,有一个很重要的概念――线程,几乎所有目前流行的操作系统都支持线程,线程来源于操作系统中进程的概念,进程有自己的虚拟地址空间以及正文段、数据段及堆栈,而且各自占有不同的系统...
    99+
    2023-06-03
  • Java中如何实现两个线程交替运行
    小编给大家分享一下Java中如何实现两个线程交替运行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!收到老师的一个题目,让我准备两个流程,依次实现输出以下信息如:线...
    99+
    2023-06-21
  • Docker如何创建运行多个mysql容器
    这篇文章主要介绍“Docker如何创建运行多个mysql容器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker如何创建运行多个mysql容器”文章能帮助大家...
    99+
    2024-04-02
  • Java并发编程之线程创建介绍
    目录1.线程与进程2.线程的创建与运行1.线程与进程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是一个实体,一个进程中至少有一个线程,是CPU调...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作