목차
간략한 역사
스레드의 장점
스레드 위험
Java java지도 시간 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으로 문의하세요.

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Xiaohongshu 메모를 삭제하는 방법 Xiaohongshu 메모를 삭제하는 방법 Mar 21, 2024 pm 08:12 PM

Xiaohongshu 메모를 삭제하는 방법 Xiaohongshu 앱에서 메모를 편집할 수 있습니다. 다음으로 편집기는 Xiaohongshu 메모 삭제 방법에 대한 사용자 사진과 텍스트를 가져옵니다. 보세요! Xiaohongshu 사용 튜토리얼 Xiaohongshu 메모 삭제 방법 1. 먼저 Xiaohongshu 앱을 열고 메인 페이지로 들어가서 오른쪽 하단에 있는 [Me]를 선택하여 특별 영역으로 들어갑니다. 2. 그런 다음 내 영역에서 다음과 같이 메모 페이지를 클릭합니다. 3. 노트 페이지에 들어가서 오른쪽 상단에 있는 [점 3개]를 클릭합니다. 4. 마지막으로 기능 표시줄이 하단에 확장되고 [삭제]를 클릭하여 완료합니다.

Xiaohongshu에서 삭제된 메모를 복구할 수 있나요? Xiaohongshu에서 삭제된 메모를 복구할 수 있나요? Oct 31, 2023 pm 05:36 PM

Xiaohongshu에서 삭제된 메모는 복구할 수 없습니다. 지식 공유 및 쇼핑 플랫폼인 Xiaohongshu는 사용자에게 메모를 기록하고 유용한 정보를 수집하는 기능을 제공합니다. Xiaohongshu의 공식 성명에 따르면 삭제된 메모는 복구할 수 없습니다. Xiaohongshu 플랫폼은 전용 노트 복구 기능을 제공하지 않습니다. 즉, Xiaohongshu에서 메모가 삭제되면 실수로 삭제되었거나 다른 이유로 삭제된 콘텐츠를 플랫폼에서 검색하는 것이 일반적으로 불가능하다는 것을 의미합니다. 특별한 상황이 발생하는 경우 Xiaohongshu 고객 서비스 팀에 연락하여 문제 해결에 도움을 받을 수 있는지 알아볼 수 있습니다.

Xiaohongshu에 게시한 메모가 누락된 경우 어떻게 해야 합니까? 방금 보낸 메모를 찾을 수 없는 이유는 무엇인가요? Xiaohongshu에 게시한 메모가 누락된 경우 어떻게 해야 합니까? 방금 보낸 메모를 찾을 수 없는 이유는 무엇인가요? Mar 21, 2024 pm 09:30 PM

Xiaohongshu 사용자로서 우리 모두는 게시된 노트가 갑자기 사라지는 상황을 경험해 본 적이 있을 것입니다. 이는 의심할 여지 없이 혼란스럽고 걱정스러운 일입니다. 이런 경우, 우리는 어떻게 해야 합니까? 이번 글에서는 "샤오홍슈에서 발행한 노트가 누락된 경우 어떻게 해야 할까요?"라는 주제를 중심으로 자세한 답변을 드리겠습니다. 1. Xiaohongshu에서 발행한 노트가 누락된 경우 어떻게 해야 합니까? 첫째, 당황하지 마십시오. 메모가 누락된 경우 침착함을 유지하는 것이 중요하며 당황하지 마십시오. 이는 플랫폼 시스템 장애 또는 운영 오류로 인해 발생할 수 있습니다. 출시 기록을 확인하는 것은 쉽습니다. Xiaohongshu 앱을 열고 "나" → "게시" → "모든 출판물"을 클릭하면 자신의 출판 기록을 볼 수 있습니다. 여기에서는 이전에 게시된 메모를 쉽게 찾을 수 있습니다. 3.다시 게시합니다. 발견된 경우

최신 iOS 17 시스템에서 iPhone에 Apple Notes를 연결하는 방법 최신 iOS 17 시스템에서 iPhone에 Apple Notes를 연결하는 방법 Sep 22, 2023 pm 05:01 PM

링크 추가 기능을 사용하여 iPhone에서 AppleNotes를 연결하세요. 참고: iOS17이 설치된 경우에만 iPhone의 Apple Notes 간에 링크를 생성할 수 있습니다. iPhone에서 메모 앱을 엽니다. 이제 링크를 추가하려는 노트를 엽니다. 새 메모를 생성하도록 선택할 수도 있습니다. 화면의 아무 곳이나 클릭하세요. 메뉴가 표시됩니다. "링크 추가" 옵션을 보려면 오른쪽에 있는 화살표를 클릭하세요. 클릭하세요. 이제 메모 이름이나 웹페이지 URL을 입력할 수 있습니다. 그런 다음 오른쪽 상단의 완료를 클릭하면 추가된 링크가 노트에 나타납니다. 단어에 링크를 추가하려면 해당 단어를 두 번 클릭하여 선택하고 "링크 추가"를 선택한 다음

Xiaohongshu의 노트에 제품 링크를 추가하는 방법 Xiaohongshu의 노트에 제품 링크를 추가하는 방법에 대한 튜토리얼 Xiaohongshu의 노트에 제품 링크를 추가하는 방법 Xiaohongshu의 노트에 제품 링크를 추가하는 방법에 대한 튜토리얼 Mar 12, 2024 am 10:40 AM

Xiaohongshu 노트에 제품 링크를 추가하는 방법 Xiaohongshu 앱에서는 사용자가 다양한 콘텐츠를 탐색할 수 있을 뿐만 아니라 쇼핑도 할 수 있기 때문에 이 앱에는 쇼핑 추천 및 좋은 제품 공유에 대한 콘텐츠가 많이 있습니다. 이 앱에서는 일부 쇼핑 경험을 공유하고, 협력할 판매자를 찾고, 메모에 링크를 추가하는 등의 작업도 할 수 있습니다. 이 앱은 편리할 뿐만 아니라 많은 전문가가 만들 수 있기 때문에 많은 사람들이 쇼핑에 기꺼이 이 앱을 사용합니다. 흥미로운 콘텐츠를 탐색하고 자신에게 맞는 의류 제품이 있는지 확인할 수 있습니다. 노트에 제품 링크를 추가하는 방법을 살펴보겠습니다. 샤오홍슈 노트에 제품 링크를 추가하는 방법 휴대폰 데스크톱에서 앱을 엽니다. 앱 홈페이지를 클릭하세요

Yii 프레임워크 소개: Yii의 핵심 개념 이해 Yii 프레임워크 소개: Yii의 핵심 개념 이해 Jun 21, 2023 am 09:39 AM

Yii 프레임워크는 웹 애플리케이션을 개발할 때 효율성과 안정성이 뛰어난 고성능, 확장성, 유지 관리 가능성이 높은 PHP 개발 프레임워크입니다. Yii 프레임워크의 가장 큰 장점은 고유한 기능과 개발 방법이면서 동시에 많은 실용적인 도구와 기능을 통합한다는 것입니다. Yii 프레임워크의 핵심 개념인 MVC 패턴 Yii는 애플리케이션을 비즈니스 로직 처리 모델과 사용자 인터페이스 표현 모델이라는 세 가지 독립적인 부분으로 나누는 패턴인 MVC(Model-View-Controller) 패턴을 채택합니다. .

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을 통해 개발자는 다음을 수행할 수 있습니다.

See all articles