搜索
首页Javajava教程JAVA的简单介绍

JAVA的简单介绍

Jun 23, 2017 pm 01:52 PM
笔记简介读书

简史

  早期的计算机中不包含操作系统,从头至尾都只执行一个程序,并且这个程序能访问计算机所有资源。随着计算机发展,操作系统的出现,使得计算机可以同时运行多个程序,并且每程序都在单独的进程内运行。为什么要这么做呢?主要基于以下原因:

1.资源利用率 程序在等待时计算机可以执行另一个程序,同一个资源可以被不同程序使用,这无疑提高了资源的利用率。
2.公平性 不同的用户与程序对计算机有相同的使用权,通过时间分片每个程序共享资源,而不是等待上一个程序运行结束再启动下一个程序。
3.便利性 每个程序单独运行,必要时相互通信,比一个程序完成所有任务更容易实现。

  既然计算机由单任务发展为多任务,那程序自然也可以从传统的串行程序发展为并发程序

  串行程序的优势在于简单直观。但同样由于以上三个原因促使线程的出现。上述计算机可以在单独的进程内运行程序,而线程允许在同一个进程内存在多个程序控制流,一个程序的多个线程还可以同时被多个CPU调度运行。这就等同于计算机同时执行多个程序(进程),程序同时执行多个线程。即进程内运行线程。

  线程又称轻量级进程。现如今的操作系统都是以线程为基本单位调度的。由于线程间共享资源,如果没有明确的同步机制,便会导致线程间执行紊乱,数据错误或失效,导致异常。这通常也是并发编程的难度所在。

  以我的观点,所谓的并发编程就是对线程的运用。线程能将很多异步工作流转换成串行工作流,而并发编程便是在异步情况下实现同步,使其符合需求。

  那么线程有哪些优势和风险呢?

线程优势

  线程能有效的降低程序开发和维护成本,提升性能。降低代码复杂度,更好模拟人类工作方法。

优势1.发挥多处理器的强大功能 多处理器系统日益完善,使得线程的作用尤为明显。由于不同线程可以同时被多个处理器调度,特别是在I/O操作时,减少了程序的等待时间,多处理器让程序执行的效率提升从而导致扩大了系统的吞吐率。
优势2.降低建模难度 一直做同一件事总比做多件事来的简单。利用线程吧程序任务细化,多任务分给多线程,每个线程任务单一,必要时相互通信,比单线程来回切换任务花销更小。
优势3.简化异步事件处理 当一个请求发出等待响应时,整个程序都要等待吗?这就意味着其他请求都将停顿。就好比聊天时必须对方回复才能说下一句话,这显然是不合理的。如果给每个请求一个线程处理,线程独立不相互影响,解决了问题。当然如果聊天回复时必须知道对方说的话,注意线程安全。
优势4.响应更敏捷的用户界面传统GUI程序是单线程的,如果其中一个用户事件处理时间过长,整个程序将处于卡死状态,使得用户体验变差。如果把一些耗时操作分给一个独立线程,其他事件依旧有线程处理,变会使得用户界面流畅。

线程风险

  线程的支持是把双刃剑,并发程序的开发也给程序员们带来了更高的水平要求。

风险1.安全性问题 并发编程可能会出现单线程程序不会出现的错误。
风险2.活跃性问题 活跃性的定义是“某件正确的事情一定会发生”。单线程中无限循环便是活跃性问题。如果线程A等待线程B释放所持有的资源,线程B一直没有释放,则线程A将一直等待下去,这便是活跃性问题。
风险3.性能问题 性能则是“正确的事情尽快发生”。良好的并发设计会提升性能,反之则会降低性能,毕竟启动线程也是要消耗资源的。

  关于安全性有一个很好的例子:

value++;

  只此一行代码,在单线程程序下完全没有问题,但在多线程下可能会出现意想不到的后果。

  执行此行代码分三步:1.读取value值;2.value值加1;3.将加1的值赋回value。而程序中可能由多个线程交替执行,在此期间如果两个线程同时读出value,从而得到相同的值,又同时把它加1,结果就是不同线程获得同样的值。而我们的期望是这个值被加了两次。

  每一个java程序都会使用线程,即时你在程序中没有显示地创建线程,使用的框架仍在创建线程,这些线程必须是线程安全的。

以上是JAVA的简单介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Java仍然是基于新功能的好语言吗?Java仍然是基于新功能的好语言吗?May 12, 2025 am 12:12 AM

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

是什么使Java很棒?关键特征和好处是什么使Java很棒?关键特征和好处May 12, 2025 am 12:11 AM

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

前5个Java功能:示例和解释前5个Java功能:示例和解释May 12, 2025 am 12:09 AM

Java的五大特色是多态性、Lambda表达式、StreamsAPI、泛型和异常处理。1.多态性让不同类的对象可以作为共同基类的对象使用。2.Lambda表达式使代码更简洁,特别适合处理集合和流。3.StreamsAPI高效处理大数据集,支持声明式操作。4.泛型提供类型安全和重用性,编译时捕获类型错误。5.异常处理帮助优雅处理错误,编写可靠软件。

Java的最高功能如何影响性能和可伸缩性?Java的最高功能如何影响性能和可伸缩性?May 12, 2025 am 12:08 AM

java'stopfeatureSnificallyEnhanceItsperFormanCeanDscalability.1)对象 - 方向 - incipleslike-polymormormormormormormormormormormormormorableablefleandibleandscalablecode.2)garbageCollectionAutoctionAutoctionAutoctionAutoctionAutoctionautomorymanatesmemorymanateMmanateMmanateMmanagementButCancausElatenceiss.3)

JVM内部:深入Java虚拟机JVM内部:深入Java虚拟机May 12, 2025 am 12:07 AM

JVM的核心组件包括ClassLoader、RuntimeDataArea和ExecutionEngine。1)ClassLoader负责加载、链接和初始化类和接口。2)RuntimeDataArea包含MethodArea、Heap、Stack、PCRegister和NativeMethodStacks。3)ExecutionEngine由Interpreter、JITCompiler和GarbageCollector组成,负责bytecode的执行和优化。

什么是使Java安全安全的功能?什么是使Java安全安全的功能?May 11, 2025 am 12:07 AM

Java'ssafetyandsecurityarebolsteredby:1)strongtyping,whichpreventstype-relatederrors;2)automaticmemorymanagementviagarbagecollection,reducingmemory-relatedvulnerabilities;3)sandboxing,isolatingcodefromthesystem;and4)robustexceptionhandling,ensuringgr

必不可少的Java功能:增强您的编码技巧必不可少的Java功能:增强您的编码技巧May 11, 2025 am 12:07 AM

javaoffersseveralkeyfeaturesthatenhancecodingskills:1)对象 - 方向 - 方向上的贝利奥洛夫夫人 - 启动worldentities

JVM最完整的指南JVM最完整的指南May 11, 2025 am 12:06 AM

thejvmisacrucialcomponentthatrunsjavacodebytranslatingitolachine特定建筑,影响性能,安全性和便携性。1)theclassloaderloader,links andinitializesClasses.2)executionEccutionEngineExecutionEngineExecutionEngineExecuteByteCuteByteCuteByteCuteBytecuteBytecuteByteCuteByteCuteByteCuteBytecuteByteCodeNinstRonctientions.3)Memo.3)Memo

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。