当前位置: 首页 > 网络应用技术

Java多线程线程创建和线程类的使用

时间:2023-03-06 20:41:02 网络应用技术

  ??之前的单词q歌太达

  本文介绍了Java多线程中线程类的使用以及相关线程对象的创建和常见方法。

  ?博客主页:没有看到Hua Wen的博客主页?欢迎跟随?喜欢?最喜欢的??消息????掘金的开始时间:?2022年5月30日???毅力和努力肯定会换成诗歌和距离!参考书:?“计算机操作系统”?参考在线编程网站:?niuke.com?Liechie的Code Cloud Gitee,通常由Bloggers编写的程序代码。Blogger的GitHub,Bloggers撰写的程序代码在其中。作者的水平非常有限。如果您发现错误,则必须及时通知作者!谢谢!

  线程是操作系统中的概念。操作系统的角色验证了线程的机理,并提供了一些API供用户使用用户层(例如Linux的Pthread库)。提供的API被进一步抽象和封装。也就是说,类的实例对应于线程。

  ,可运行的目标)基于线程组和任务(理解)5public线程(线程组组,可运行的目标,字符串名称)创建线程超过4个指定的线程名称6public thread(字符串名称).group,字符串,字符串名称创建基于线程的线程)组和指定的线程名称8public线程(线程组组,可运行的目标,字符串名称,长堆栈)构造函数5,但它允许指定的线程堆栈大小?对于组管理,分组组是线程组,类代表任务类,即线程需要执行的任务。

  如果要在类中使用Java线程至少使用这些方法:|方法名称|说明||--- |--- ||公共void run()|此方法用于打包包装线程执行的内容||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||公共同步void start()|创建并执行线程的运行方法||公共静态本地空白睡眠(长毫升)抛出了中断|使线程毫秒毫秒|

  要创建对象,您必须重写该方法,因为您必须使用一些代码来创建线程。

  首先,我们可以创建类继承类并重写该方法。

  线程不是使用线程对象的创建创建的。它只是简单地创建一个线程对象,并且将通过操作方法创建和执行线程。操作结果:

  除了使用子类继承类和重写方法外,使用子类实现接口(在接口中还有一种方法,表明任务的内容),可以理解为“任务”,即,即对象可以接受参考并执行参考参考。

  因为它是一个接口,所以需要实现该方法。创建线程对象后,此时线程不会创建和运行。呼叫方法需要创建一个启动线程。

  运行结果:根据“低内部聚会,高耦合”的编程样式,创建方式的使用是更好的。

  当然,匿名内部类也可以用于传输匿名对象以重写该方法。

  操作结果:

  使用lambda表达式,它基本上是由匿名内部类创建的。

  操作结果:

  一个过程中至少会有一个线程。如果不使用多线程编程,则默认情况下将在一个进程中执行的线程(此线程是自动创建的)。创建新线程时,线程将同时与thread.implement并发。

  操作结果:

  从上面的操作结果可以看出,因为螺纹和线程是每个打印的句子线程休眠秒,并且两个线程的顺序是随机的。这也是Java Multi -threading中的“所有弊端”。这个问题给我们带来了很多麻烦,详细信息,例如详细信息和其他后续博客。

  现在加入我们的任务,即增加20亿次,这两个变量,让我们看一下分别使用两个线程和一个线程所需的时间。

  让我们看一下完成此任务所需的时间:根据结果,我们发现这两个线程大约是大约执行的,并且单线执行的时间大约大约。线程没有优势。毕竟,线程本身的创建仍然有支出。

  该线程的公共long getID()的公共最终字符串getName()线程是公共最终的boolin isdaensdaentalit()最终本机boolean isalive()中断公共布尔值insinterrupted()线程具有徽标。同一过程中的所有线程都是相同的,每个过程都有唯一的徽标。该线程也有一个名称。如果我们创建一个对象,则没有指定线程对象的名称,它将以整数为单位命名。

  通过了解该过程,我们知道该过程具有一个状态,即阻塞,执行和准备就绪。Java中的线程也具有与此状态相似的定义。我们稍后会讨论,您无需更多地谈论优先级。

  Java线程分为背景线程和前台线程。其中,背景线程不会影响过程的退出,前台线程将影响过程的退出。例如,不会立即退出。有必要等到执行线程,并且整个过程将退出。相反,当这两个线程是背景线程时,该方法将被执行,并且该线程被迫结束,并且整个过程结束了。

  关于Java线程的属性,我们可以通过Java的官方调试工具检查Java线程的某些属性。该工具通常位于JDK目录中。双击打开以下接口:选择您需要查看和查看的线程:

  选择您需要查看的过程属性:

  millis,int nanos)抛出中断的exception指定最大等待时间并等待线程。公共静态boolean中断()确定是否设置了当前线程的中断徽标位置,并且线程的中断徽标位置是public interrupt boolean insinter insinterruptedfinal同步void setName(字符串名称)修改线程对象名称public static本地线程currenthread()以获取当前线程对象。如果我们想中断正在执行的线程?最简单但不严格的方法是我们在方法中定义了中断徽标位置(中断的符号是,默认情况是)。每次执行特定任务时,继续执行。

  操作结果:

  但是,此方法不够严格。某些场景可能无法达到预期效果。最佳方法是调整线程对象或线程类中的频段徽标。

  方法1:使用线程对象中的徽标首先使用该方法获取线程对象,然后调用对象中的方法以获取对象的中断标志,而不是您写的徽标,然后等待线程以一段时间的一段时间运行。使用方法来更改徽标位置,中断线程,编写以下代码以查看是否可以达到预期效果:

  让我们看一下:失败后,抛出异常后,线程不会中断,而是继续运行,因为当方法因呼叫和其他方法而被呼叫的方法妨碍方法时,该方法会抛出异常方法,并且中断徽标位置将被中断。它不会修改。目前,我们的语句中值的值并未中断异常,因此我们需要将线程的结尾工作代码添加到线程末尾和退出任务周期的说明。

  操作结果:

  方法2:除了线程类中的徽标外,还有一种静态方法可以访问类中的徽标位置。通常,只有一个程序。使用如何中断线程执行。

  运行结果:总而言之,通常是一种无需大脑中断线的方法。

  例如,上述20亿次计算需要线程等待方法。该线程需要等待两个线程在计算结束时计算时间戳之前运行。对于此点Java还准备了一个带有参数的方法,您可以指定最长的等待时间。还有一个细节。谁在等待,是谁?让我们假设几个线程,线程A表示呼叫方法的线程,而线程B表示线程B的方法。b结束。

  我们知道执行线程的任务是在线程对象中重写的方法,因此该方法可以直接调用该方法而不是方法?

  当然不是!因为您的调用方法只是在线程对象中调用通用方法。它不会创建一个新线程来执行该方法。而是发射方法。

  操作系统中有三种类型的过程。有三种类型的障碍物,即准备和执行,Java线程中的状态基本相同,但是它被细分了,有一点区别,让我们知道。

  :安排工作后,它尚未开始行动,也就是说,线程对象存在,但是没有执行方法。Java中的状态与该过程中的状态无关。等待唤醒(Waitf方法使线程等待醒来)。,Java的状态与该过程的状态无关。

  我首先使用流程图简要解释状态之间的关系:

  上图简要说明了这些状态之间的转移。在讨论线程安全问题时,将引入图中的关键字。

  此期间的内容共享相关线程创建的基本方法和线程类的基本方法。下一个问题将继续在多线程的深入了解中引入更多信息,例如线程安全问题,如何锁定更深层次的内容。

  原始:https://juejin.cn/post/7103537678024458254