찾다
Javajava지도 시간JAVA에 대한 간략한 소개
JAVA에 대한 간략한 소개Jun 23, 2017 pm 01:52 PM
메모소개읽다

간략한 역사

초기 컴퓨터에는 운영 체제가 포함되어 있지 않았습니다. 처음부터 끝까지 하나의 프로그램만 실행했으며 이 프로그램은 컴퓨터의 모든 리소스에 액세스할 수 있었습니다. 컴퓨터의 발전과 운영체제의 출현으로 컴퓨터는 여러 프로그램을 동시에 실행할 수 있으며, 각 프로그램은 별도의 프로세스에서 실행됩니다. 왜 이런 일을 하는가? 주로 다음과 같은 이유에 근거합니다:

1.리소스 활용 컴퓨터는 프로그램이 기다리는 동안 다른 프로그램을 실행할 수 있으며, 동일한 리소스를 다른 프로그램에서 사용할 수 있으므로 리소스 활용도가 확실히 향상됩니다.
2.공정성 다른 사용자와 프로그램은 동일한 컴퓨터 사용 권한을 갖습니다. 각 프로그램은 다음 프로그램을 시작하기 전에 이전 프로그램의 실행이 끝날 때까지 기다리는 대신 시간 분할을 통해 리소스를 공유합니다.
3.편의성 각 프로그램은 독립적으로 실행되며 필요할 때 서로 통신하므로 하나의 프로그램으로 모든 작업을 완료하는 것보다 구현하기가 더 쉽습니다.

컴퓨터가 단일 작업에서 다중 작업으로 진화했기 때문에 프로그램도 자연스럽게 전통적인 직렬 프로그램에서 동시 프로그램으로 발전할 수 있습니다.

 직렬 프로그램의 장점은 간단하고 직관적이라는 것입니다. 하지만 threads의 등장을 촉발한 것도 위의 세 가지 이유 때문이기도 합니다. 위의 컴퓨터는 별도의 프로세스에서 프로그램을 실행할 수 있으며 스레드를 사용하면 동일한 프로세스 내에 여러 프로그램 제어 흐름이 존재할 수 있습니다. 프로그램의 여러 스레드가 동시에 여러 CPU에서 실행되도록 예약할 수도 있습니다. 이는 컴퓨터가 동시에 여러 프로그램(프로세스)을 실행하는 것과 동시에 여러 스레드를 실행하는 프로그램과 동일합니다. 즉, 프로세스 내에서 스레드를 실행하는 것입니다.

 스레드는 경량 프로세스라고도 합니다. 오늘날의 운영 체제는 모두 스레드를 기본 단위로 사용하도록 예약되어 있습니다. 스레드 간에 리소스가 공유되므로 명확한 동기화 메커니즘이 없으면 스레드 간의 실행 혼란, 데이터 오류나 실패, 예외가 발생합니다. 동시 프로그래밍에 어려움이 있는 경우가 종종 있습니다.

 내 관점에서는 소위 동시 프로그래밍은 스레드를 사용하는 것입니다. 스레드는 많은 비동기 작업 흐름을 직렬 작업 흐름으로 변환할 수 있으며 동시 프로그래밍은 비동기 상황에서 동기화를 달성하여 요구 사항을 충족하도록 하는 것입니다.

 그럼 스레드의 장점과 위험성은 무엇일까요?

스레드의 장점

스레드는 프로그램 개발 및 유지 관리 비용을 효과적으로 줄이고 성능을 향상시킬 수 있습니다. 코드 복잡성을 줄이고 인간의 작업 방식을 더 효과적으로 시뮬레이션합니다.

장점 1 멀티프로세서의 강력한 기능을 최대한 활용하세요. 멀티프로세서 시스템이 점점 더 완벽해지면서 스레드의 역할이 더욱 분명해지고 있습니다. 특히 I/O 작업 중에 여러 프로세서가 서로 다른 스레드를 동시에 예약할 수 있으므로 프로그램의 대기 시간이 줄어들어 프로그램 실행 효율성이 향상되어 시스템 처리량이 확장됩니다.
장점 2. 여러 가지 일을 하는 것보다 항상 같은 일을 하는 것이 더 쉽습니다. 스레드를 사용하여 프로그램 작업을 구체화하고 여러 작업을 여러 스레드에 할당합니다. 각 스레드는 단일 작업을 가지며 필요할 때 작업을 앞뒤로 전환하는 데 단일 스레드보다 비용이 적게 듭니다.
장점 3. 비동기 이벤트 처리 단순화 응답을 기다리기 위해 요청이 발행되면 전체 프로그램이 기다려야 합니까? 이는 다른 모든 요청이 중단됨을 의미합니다. 채팅할 때와 마찬가지로 상대방이 먼저 답장을 해야 다음 문장을 말할 수 있습니다. 이는 분명히 불합리한 일입니다. 각 요청이 스레드에 의해 처리되면 스레드는 독립적이며 서로 영향을 미치지 않으므로 문제가 해결됩니다. 물론 상대방이 채팅에 답글을 달 때 무슨 말을 했는지 알아야 한다면 스레드 안전에 주의하세요.
장점 4. 반응성이 뛰어난 사용자 인터페이스 기존 GUI 프로그램은 단일 스레드로 구성되어 있어 사용자 이벤트 중 하나를 처리하는 데 너무 오랜 시간이 걸리면 전체 프로그램이 중단되어 사용자 경험이 더욱 악화됩니다. 시간이 많이 걸리는 일부 작업이 별도의 스레드에 할당되면 다른 이벤트는 여전히 스레드에 의해 처리되므로 사용자 인터페이스가 원활해집니다.

스레드 위험

스레드 지원은 양날의 검이며 동시 프로그램의 개발은 프로그래머에게 더 높은 수준의 요구 사항을 가져옵니다.

위험 1. 보안 문제 동시 프로그래밍은 단일 스레드 프로그램에서는 발생하지 않는 오류를 일으킬 수 있습니다.
Risk2. 활동성 문제 활동성의 정의는 "뭔가 올바른 일이 반드시 일어날 것"입니다. 단일 스레드의 무한 루프는 활성 문제입니다. 스레드 A가 스레드 B가 보유하고 있는 리소스를 해제할 때까지 기다리고 스레드 B가 리소스를 해제하지 않은 경우 스레드 A는 영원히 기다리게 됩니다. 이는 활동 문제입니다.
위험 3. 성능 문제 성능은 "올바른 일이 최대한 빨리 발생하는 것"입니다. 좋은 동시성 설계는 성능을 향상시키고, 그 반대의 경우도 결국 스레드를 시작하면 리소스가 소모됩니다.

 보안에 대한 좋은 예가 있습니다:

value++;

이 코드 한 줄이면 싱글 쓰레드 프로그램에서는 전혀 문제가 없지만, 멀티 쓰레드 프로그램에서는 예상치 못한 결과가 발생할 수 있습니다.

  이 코드 줄을 실행하는 세 단계가 있습니다. 1. 값을 읽습니다. 2. 값에 1을 더합니다. 3. 추가된 값을 다시 값에 할당합니다. 이 기간 동안 두 스레드가 동시에 값을 읽고 동일한 값을 얻은 다음 동시에 1을 더하면 결과적으로 서로 다른 스레드가 동일한 값을 갖게 됩니다. . 그리고 우리는 이 값이 두 번 추가될 것으로 예상합니다.

 모든 Java 프로그램은 스레드를 사용합니다. 프로그램에서 스레드를 명시적으로 생성하지 않은 경우에도 사용하는 프레임워크는 스레드로부터 안전해야 합니다.

위 내용은 JAVA에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python ORM 性能基准测试:比较不同 ORM 框架Python ORM 性能基准测试:比较不同 ORM 框架Mar 18, 2024 am 09:10 AM

对象关系映射(ORM)框架在python开发中扮演着至关重要的角色,它们通过在对象和关系数据库之间建立桥梁,简化了数据访问和管理。为了评估不同ORM框架的性能,本文将针对以下流行框架进行基准测试:sqlAlchemyPeeweeDjangoORMPonyORMTortoiseORM测试方法基准测试使用了一个包含100万条记录的SQLite数据库。测试对数据库执行了以下操作:插入:向表中插入10,000条新记录读取:读取表中的所有记录更新:更新表中所有记录的单个字段删除:删除表中的所有记录每个操作

Python ORM 在大数据项目中的应用Python ORM 在大数据项目中的应用Mar 18, 2024 am 09:19 AM

对象关系映射(ORM)是一种编程技术,允许开发人员使用对象编程语言来操作数据库,而无需直接编写sql查询。python中的ORM工具(例如SQLAlchemy、Peewee和DjangoORM)简化了大数据项目的数据库交互。优点代码简洁性:ORM消除了编写冗长的SQL查询的需要,这提高了代码简洁性和可读性。数据抽象:ORM提供了一个抽象层,将应用程序代码与数据库实现细节隔离开来,提高了灵活性。性能优化:ORM通常会使用缓存和批量操作来优化数据库查询,从而提高性能。可移植性:ORM允许开发人员在不

深入了解常用的7种Java设计模式深入了解常用的7种Java设计模式Dec 23, 2023 pm 01:01 PM

了解Java设计模式:常用的7种设计模式简介,需要具体代码示例Java设计模式是一种解决软件设计问题的通用解决方案,它提供了一套被广泛接受的设计思想与行为准则。设计模式帮助我们更好地组织和规划代码结构,使得代码具有更好的可维护性、可读性和可扩展性。在本文中,我们将介绍Java中常用的7种设计模式,并提供相应的代码示例。单例模式(SingletonPatte

Yii框架简介:了解Yii的核心概念Yii框架简介:了解Yii的核心概念Jun 21, 2023 am 09:39 AM

Yii框架是一个高性能、高扩展性、高可维护性的PHP开发框架,在开发Web应用程序时具有很高的效率和可靠性。Yii框架的主要优点在于其独特的特性和开发方法,同时还集成了许多实用的工具和功能。Yii框架的核心概念MVC模式Yii采用了MVC(Model-View-Controller)模式,是一种将应用程序分为三个独立部分的模式,即业务逻辑处理模型、用户界面呈

使用 Python ORM 实现高效的数据持久性使用 Python ORM 实现高效的数据持久性Mar 18, 2024 am 09:25 AM

对象关系映射(ORM)是一种技术,它允许在面向对象编程语言和关系数据库之间建立桥梁。使用pythonORM可以显著简化数据持久性操作,从而提高应用程序的开发效率和可维护性。优势使用PythonORM具有以下优势:减少样板代码:ORM自动生成sql查询,从而避免编写大量的样板代码。简化数据库交互:ORM提供了一个统一的接口,用于与数据库交互,简化了数据操作。提高安全性:ORM使用参数化查询,可以防止SQL注入等安全漏洞。促进数据一致性:ORM确保对象与数据库之间的同步,维护数据一致性。选择ORM有

Python Pandas 数据处理利器,新手入门必读!Python Pandas 数据处理利器,新手入门必读!Mar 20, 2024 pm 06:21 PM

pandas是python中强大的数据处理库,专门用于处理结构化数据(如表格)。它提供了丰富的功能,使数据探索、清洗、转换和建模变得简单。对于数据分析和科学领域的初学者来说,掌握Pandas至关重要。数据结构Pandas使用两种主要数据结构:Series:一维数组,类似于NumPy数组,但包含标签(索引)。DataFrame:二维表,包含具有标签的列和小数。数据导入和导出导入数据:使用read_csv()、read_excel()等函数从CSV、Excel和其他文件导入数据。导出数据:使用to_

Python vs. Jython:谁是跨平台开发之王?Python vs. Jython:谁是跨平台开发之王?Mar 22, 2024 pm 12:21 PM

python和Jython都是流行的编程语言,但它们针对不同的用例进行了优化,并在跨平台开发方面具有独特的优势和劣势。Python优势:广泛的库和社区支持易于学习和使用,适合初学者可移植性强,可跨多个平台运行支持多种编程范式,包括面向对象、函数式和命令式编程劣势:性能较低,不适合处理密集型计算任务对内存消耗较高在某些平台上可能需要其他工具和配置Jython优势:完全与Python兼容,可以使用Python的所有库和工具运行在Java虚拟机(JVM)上,提供与Java生态系统的无缝集成性能优于Py

用 Python Tkinter 为你的项目增添 GUI 魅力用 Python Tkinter 为你的项目增添 GUI 魅力Mar 24, 2024 am 09:46 AM

Tkinter是python中用于创建图形用户界面(GUI)的一个强大库。它以其简单性、跨平台兼容性和与Python生态系统的无缝集成而闻名。通过使用Tkinter,您可以为您的项目添加用户友好的界面,从而提高用户体验并简化与应用程序的交互。创建TkinterGUI应用程序要使用Tkinter创建GUI应用程序,请执行以下步骤:导入Tkinter库:importtkinterastk创建Tkinter主窗口:root=tk.Tk()配置主窗口:设置窗口标题、大小、位置等添加GUI元素:使用Tki

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구