百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

java编程教程:多线程&并发编程

yuyutoo 2024-10-12 01:03 3 浏览 0 评论

java支持单线程以及多线程行动。单线程程序具有一个入口点(main()方法)和一个出口点。多线程程序具有初始入口点(main()方法),然后是许多入口和退出点,它们同时运行main().。“并发性“指同时做多项任务。 java已经内置支持并发编程通过在单个程序中并行运行多个线程。a螺纹,也称为a轻量级过程它是一个单一的编程操作流程,具有一定的起始和结束。在线程的生存期内,只有一个执行点。线程本身不是程序,因为它不能独立运行。相反,它运行在一个程序中。下图显示了一个在单个cpu下运行3个线程的程序:

多任务(或多处理)

现代操作系统(如windows和unix)是多任务系统。多任务系统可以通过共享计算资源,如cpu(S)、主存和i/o通道来并行执行多个任务。在单cpu机器中,只有一个任务可以在一个时间内执行-通过时间切片cpu。在多cpu机器中,可以同时执行几个任务,要么分散在cpu上,要么分时间切片。

在今天的操作系统中,多任务处理是必要的,通过充分利用和优化计算资源的使用来更好地发挥性能。通常有两种多任务操作系统:

  1. 协作多任务系统*每项任务必须自愿对其他任务的输出控制。这就有一个缺点:运行或不合作任务可能会挂起整个系统。

  2. 预攻击多任务系统*任务是给定时间-cpu(S)的切片,并且一旦分配使用时,将被迫对其他任务进行控制。

多线程(在流程中)

在unix中,我们叉子一个新的过程。在windows中,我们启动一个程序。一个过程或程序有自己的地址空间和控制块。它叫做重量级因为它消耗了大量的系统资源。在流程或程序中,我们可以同时运行多个线程来提高性能。

线程不同于重量级进程,是轻量级的,并且运行在一个过程中-它们共享相同的地址空间、分配的资源以及该进程的环境。它是轻量级的,因为它运行在重量级进程的上下文中,并利用为该程序分配的资源和程序环境。线程必须在运行过程中创建自己的资源。例如,线程有自己的堆栈、寄存器和程序计数器。线程内运行的代码仅在该上下文中工作,因此,线程(连续操作流)也称为执行上下文。

通过优化系统资源的使用,程序内多线程提高了程序的性能。例如,当一个线程被阻塞(例如等待完成i/o操作)时,另一个线程可以使用cpu时间来执行计算,从而导致更好的性能和总体吞吐量。

多线程也是必要的,以提供更好的交互性与用户。例如,在一个字处理器中,当一个线程正在打印或保存文件时,另一个线程可以用来继续键入。在gui应用程序中,multithreading对于提供一个响应性用户界面。

对于本文,我假定您理解swing编程,因为swing应用程序依赖于multithreading(执行它们的特定函数、重新绘制和处理事件),最好是演示multithreading。

典型的java程序运行在单个进程中,并且对多个进程不感兴趣。但是,在过程中,它经常使用多线程来并发地运行多个任务。一个独立的java应用程序从一个线程开始(称为主螺纹()与main()方法相关联。这是主螺纹然后可以启动新的用户线程。

臭名昭著的“未响应用户界面”

声名狼藉无响应用户界面(Ui)问题最好用一个计数循环的swing程序来说明。

gui程序有两个按钮。推“start计数”按钮开始计数。推“停止计数”按钮是假想停止(停顿)计数。两个按钮处理程序通过boolean旗帜被称为stop.。停止按钮处理程序设置stop标记;当启动按钮处理程序检查stop在继续下一次计数之前,已经设置了标志。

您应该在eclipse/NetBeans下编写程序,以便我们能够跟踪线程。

但是,一旦启动了启动按钮,ui就会被推到冻住-显示器上没有更新计数器值(即显示不是刷新),并且用户界面没有响应单击停止按钮或任何其他用户交互。

跟踪线程(高级)

从程序跟踪(通过eclipse/NetBeans),我们观察到:

  1. 大main()方法是在“main”线程中启动的。

  2. jre的窗口子系统,通过SwingUtilities.invokeLater()开始3个线程:“awt-windows”(守护线程)、“awt-关闭”和“awt-EventQueue”。“awt-EventQueue-0”称为事件调度线程(EDT),这是唯一一个线程负责处理所有事件(例如单击按钮)并刷新显示以确保gui操作中线程安全并操作gui组件。构造函数UnresponsiveUI()计划在事件调度线程上运行(通过invokeLater())在所有现有事件都已处理之后。“main”线程在main()方法完成。创建了一个名为“DestroyJavaVM”的新线程。

  3. 单击启动按钮时,actionPerformed()运行在上。现在,在已经完全占用了计算密集型计数循环。换句话说,尽管计算正在进行,但在是忙无法处理任何事件(例如单击“停止按钮”或“窗口关闭”按钮)并刷新显示-直到计数完成和美国东部时间才可用。结果显示,显示会冻结直到计数循环完成。

建议在上运行gui构建代码,通过invokeLater().。这是因为许多gui组件都不能保证线程安全。将所有访问gui组件的访问都转移到单个线程中,确保线程安全。假设我们直接在main()方法(在“main”线程下)如下:

追踪表明:

  1. 大main()方法从“main”线程开始。

  2. 当我们进入构造函数时,将启动一个新线程“awt-windows”(守护线程)new UnresponsiveUI()“(因为”)extends JFrame“)

  3. 执行后“setVisible(true)“另外两个线程创建了-”awt-关闭“和”awt-EventQueue“(即,)。

  4. “main”线程在main()方法完成。创建了一个名为“DestroyJavaVM”的新线程。

  5. 此时,有4个线程运行-“awt-windows”、“awt-关闭”和“awt-EventQueue(美国东部时间)”和“DestroyJavaVM”。

  6. 单击启动按钮调用actionPerformed()在美国东部地区。

在前面的示例中,在是通过invokeLater()在后一种情况下,在开始后setVisible()...

相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: