`

线程与进程的关系 ,Java 线程

 
阅读更多

                                       进程和线程的关系

 

1. 一个 线程只能属于一个进程,一个进程可以有多个线程,但至少有一个线程。

2. 资源分配给进程,同一进程的所有线程共享进程中的所有资源。

3. 处理机分配给线程, 真正在处理机上运行的是线程。

4. 线程在执行中需要同步协作,不同的进程的线程间要利用消息通信的办法实现同步。

 

java 线程

线程离开运行状态的方法

1. 调用 Thread.sleep() 方法,使当前线程睡眠 至少。。毫秒。(尽管它可能在达到睡眠时间前被中断)

2. Thread.yield(),不能保证,它可能使当前线程回到可运行状态,使其它同优先级的线程有机会执行。

3. 调用join() 方法,保证当前线程停止执行,直到该线程加入的线程执行完成为止,然后,如果加入的线程没有存活,则当前线程不需要停止。

 

线程同步与锁

一、同步问题的提出

线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。

 

二、何时需要同步

在多个线程同时访问互斥(可交换)数据是,应该同步以保护数据,确保两个线程不会同时修改更改它。

对于非静态字段中可更改的数据,通常使用非静态方法访问。

对于静态字段中可更改的数据,通常使用静态方法访问。

 

三、java 线程交互

void notify() 唤醒在此对象监视器上等待的单个线程。

void notifyAll()     唤醒在此对象监视器上等待的所有线程。

void vait()   导致当前的线程等待,直到其他的线程调用此对象的notify()方法或notifyAll() 方法。

当然wait() 还有另外两个重载方法:

void wait(long timeout)  导致当前的线程等待,直到其他线程调用此对象的notity方法或notifyAll()方法,或者超过指定的时间量。
void wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的notify() 方法或notifyAll()方法, 或者其他某个线程中断当前线程,或者已超过摸个实际时间量。

关于等待/通知,要记住的关键点是:

必须从同步环境内调用wait()\ notify()\notifyAll()方法。线程不能调用对象上等待或通知的方法,除非它拥有那个对象的锁。

 

 

分享到:
评论

相关推荐

    JAVA线程与进程的区别

    "JAVA线程与进程的区别" JAVA语言中,线程(Thread)和进程(Process)是两个基本概念,它们都是操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。但是,它们之间有着本质的区别。 ...

    73道Java面试题合集-多线程与进程

    以下是对73道Java面试题合集——多线程与进程相关知识点的详细解释。 1. **进程与线程的概念**: - **进程**:是操作系统资源分配的基本单位,拥有独立的内存空间和系统资源,可以并发执行。 - **线程**:是程序...

    用java编的适用于操作系统课程设计的线程-进程管理

    在操作系统课程设计中,线程和进程管理是核心部分,它们涉及到系统资源的调度与分配。Java作为一种跨平台的编程语言,提供了丰富的API来支持线程和进程的管理。本项目利用Java实现了线程和进程的模拟及管理,旨在...

    深入解析:Java中的线程与进程

    本文将详细探讨Java中的线程和进程的区别,以及它们在程序设计和运行时的角色和重要性 理解线程和进程的区别对于Java程序员来说至关重要。线程提供了一种高效的方式来实现并发执行,而进程则是操作系统资源分配的...

    输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    在分析Java应用程序的性能问题时,了解和分析Java线程的状态是非常关键的。线程堆栈信息可以让我们深入观察到线程的运行状况,包括线程的当前状态、调用堆栈、锁信息等。为了获取这些信息,我们可以使用jstack工具,...

    Java 的多线程,程序、进程和线程的概念31

    2. **线程的启动与生命周期**:通过调用Thread对象的start()方法启动线程,线程会经历新建(New)、就绪(Runnable)、运行(Running)、等待/阻塞(Blocked/Wait)和终止(Terminated)五个状态。 3. **线程同步**...

    java多线程的讲解和实战

    4. **线程优先级与调度**:Java的`Thread`类提供了设置线程优先级的方法,如`setPriority(int priority)`,但实际线程调度依赖于操作系统的策略,优先级并不保证绝对的执行顺序。 5. **守护线程(Daemon)**:守护...

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm

    Java中的`java.lang.Runtime`和`java.lang.ProcessBuilder`类可以帮助我们启动新的进程,而`java.util.concurrent`包下的线程类则可以用来创建守护线程。 首先,让我们了解如何创建一个监听进程。监听进程通常是...

    java多线程处理数据库数据

    线程是程序执行的最小单位,一个进程可以包含多个线程。在Java中,我们可以使用`Thread`类或者`Runnable`接口来创建线程。然而,为了更好地管理和控制线程,Java并发包提供了如`ExecutorService`、`Future`、`...

    java线程 线程学习资料 java线程教程

    ### Java线程教程知识点梳理 #### 一、教程概述 - **目标读者**: 本教程主要面向具备丰富Java基础知识但缺乏多线程编程经验的学习者。 - **学习成果**: 学习者能够掌握编写简单的多线程程序的能力,并能够理解和...

    Java线程与多线程教程Java开发Java经验技巧共4页

    Java线程与多线程是Java开发中的核心概念,对于任何Java开发者来说,理解和掌握这部分内容至关重要。在Java中,线程是程序执行的基本单元,它允许程序同时执行多个任务,提高了程序的运行效率和响应速度。本教程将...

    java 多线程设计模式 进程详解

    《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...

    java 查看JVM中所有的线程的活动状况

    在命令行中运行`jstack <pid>`(pid是Java进程的ID),即可查看该进程的线程状态。 总结来说,Java提供了多种方式来查看JVM中的线程活动状况,无论是通过编程还是使用命令行工具,都能帮助开发者诊断和优化多线程...

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    1. **线程与进程**:线程是进程内的一个执行单元,多个线程共享进程的内存空间和资源,而进程是操作系统分配资源的基本单位,每个进程拥有独立的内存区域。 2. **线程模型**:Java中的线程由虚拟CPU(封装在`java....

    Java面向对象程序设计-并发(线程与进程).pptx

    在Java中,理解和掌握线程与进程的关系以及它们的工作原理至关重要。 首先,我们要理解"进程"与"线程"的基本概念。在操作系统层面,进程被视为系统资源分配和调度的基本单元。每个进程都有自己的独立内存空间,包含...

    java多线程文件传输

    - **Java线程实现方式**:通过实现`Runnable`接口或继承`Thread`类创建线程。推荐使用`Runnable`,因为它可以避免单继承的限制,更符合面向对象设计原则。 2. **多线程的创建与启动** - **创建线程**:创建`...

    进程和线程详解

    进程和线程是计算机操作系统中的两个基本概念,对于任何软件开发者,尤其是系统级或服务器...通过阅读“进程和线程.doc”文档,可以进一步深入学习这两个主题的细节,包括它们的生命周期、调度策略、同步与通信方法等。

    java线程进程锁资源

    Java线程和进程是计算机程序执行的两种基本方式,它们在多任务环境下尤为关键。Java作为一门多线程编程语言,提供了丰富的工具和机制来管理线程和进程,以实现高效的并发执行。 **进程与线程的区别** 1. **进程**:...

Global site tag (gtag.js) - Google Analytics