JAVA线程----基础

线程简介:

  现在个人计算机操作系统多采用多任务和分时设计。一般可以在 同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都哟自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序通过流控制来执行程序流,程序中单个顺序流控制称为线程;多线程则是指单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句几乎可以在同一时间内运行的。

  线程与进程相似,是一段完成某个特定功能的代码,是程序中当个顺序的流控制。但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源的,线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多,正因为如此,线程被称为轻负荷进程。一个进程中可以包含多个线程。

  一个线程是一个程序内部的顺序控制流。

(1)、进程:每个进程都有自己的代码和数据空间(进程上下文),进程切换的开销大。

(2)、线程:轻量级进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程切换开销小。

(3)、多进程:在操作系统中,能同时运行多个任务程序;

(4)、多线程:在同一应用程序中,有多个顺序流同时执行;

线程的状态:

  Java使用Thread类及其子类的对象表示线程,线程在它的一个完整的生命周期中通常要经历如下的四种状态:

1.创建状态

  当一个Thread类或其子类的对象被声明并创建时,例如执行下列语句时,线程就处于创建状态:

  Thread myThread=new MyThreadClass();

当一个线程处于创建状态的时候,它仅仅分配内存资源,并不能执行。

2.可运行状态

  线程对象只有调用start()方法才能进入可运行状态;

  myThread.start();

  当处于可运行状态时,系统就为这个线程分配了它需要的系统资源,安排其运行并调用线程运行方法。

3.不可运行状态

  不可运行状态也称阻塞状态,或者因为某种原因(输入/输出,等待消息,或者其他阻塞情况),系统不能执行线程状态。线程进入该状态的原因有如下几条。

  (1)、调用了sleep方法  (2)、调用了suspend方法  

  (3)、为等候一个条件变量,线程调用wait方法

  (4)、输入/输出流中发生了阻塞状态

4.死亡状态

  就是线程释放了实体。处于死亡状态的线程不具有继续运行的能力。一般可以通过两种方法实现:

  (1)、自然撤销,正常运行的线程完成它的全部工作,也就是线程执行完毕

  (2)、线程被停止,调用stop方法。一般不推荐通过这种方法来终止线程的执行。

我们以前写的程序都是从上往下按照一定顺序执行的,而引入线程之后,这个苛刻的规则被打破,程序会开辟多个分支运行,再加上处理器的高速处理数据的能力,我们肉眼看起来就像是同时运行一样。

时间: 2024-12-29 12:02:19

JAVA线程----基础的相关文章

Java 线程基础

目录 Java 线程基础  一.线程简介  二.线程基本用法  三.线程间通信  四.线程状态  参考资料 Java 线程基础 ?? 本文以及示例源码已归档在 javacore 一.线程简介 什么是进程 什么是线程 进程和线程的区别 二.线程基本用法 创建线程 线程休眠 线程礼让 终止线程 守护线程 FAQ 三.线程间通信 wait/notify/notifyAll join 管道 四.线程状态 参考资料 一.线程简介 什么是进程 简言之,进程可视为一个正在运行的程序.它是系统运行程序的基本单位

并发编程总结——java线程基础1

最近没事,顺便看看java并发编程的东西,然后总结纪录下来,大家如果能看到帮忙指正指正哈哈,另外一方面也为以后自己回顾的时候可以看看. 关于并发编程,准备从几个点切入: 1.java线程几本知识 2.juc原子类 3.锁 4.juc集合 5.线程池 ------------------------------------------------------------------- 分割线开始.... 说到多线程,java中超父类Object中有wait()和notify()方法,包括Runna

Java线程基础知识(状态、共享与协作)

1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后---> 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CPU调度的最小单位,必须依赖进程而存在. 澄清并行和并发 并行:同一时刻,可以同时处理事情的能力 并发:与单位时间相关,在单位时间内可以处理事情的能力 高并发编程的意义.好处和注意事项 好处:充分利用cpu的资源.加快用户响应的时间,程序模

java线程基础梳理

java线程 概述 进程:运行时概念,运行的应用程序,进程间不能共享内存 线程:应用程序内并发执行的代码段,可以共享堆内存和方法区内存,而栈内存是独立的. 并发理解:在单核机器上,从微观角度来看,一段时间内cup只能执行一个任务,但是因为cup在只执行一段代码段的时候大部分的时间是处于等待程序的,所以可以再开几条程序,然后通过轮询机制,让cpu执行多个进程,从宏观角度来看就是所谓的并发.如果机器是多核,那么就是真正的并发. 线程调度模型 线程的调度模型分为: 分时调度模型和抢占式调度模型,Jav

Java线程基础

一个线程运行一个顺序程序. 在java中,线程一般是java.lang.Thread的子类,它提供了一些方法来创建线程.启动线程. 挂起线程.等待线程完毕. 首先,创建一个实现Runnable接口的类,该类的run()方法完毕全部的工作.比如.以下是一个打印字符串的简单线程. package lou.thread; public class HelloWorld implements Runnable { String message; public HelloWorld(String m) {

java 线程基础学习

今天趁空闲时间看了点线程方面的知识 首先看的是volatile关键字,按照我之前书上看到的一点知识,自己的理解是,volatile关键字会阻止编译优化,因为cpu每次读取数据是并不是从高速缓存中读取,而是取内存中的数据.这是自己的一点简单的理解,可能有错误.我之前只是看了点线程方面的知识,只是在自己写代码的时候很少(根本没用到),就是自己学习的时候跟着书上敲了代码. 实习的时候要我写个压力测试,1000个线程同时发请求,统计请求失败的次数,我用了volatile关键字,但是感觉有点问题,今天就测

【Java并发专题之二】Java线程基础

使用线程更好的提高资源利用率,但也会带来上下文切换的消耗,频繁的内核态和用户态的切换消耗,如果代码设计不好,可能弊大于利. 一.线程 进程是分配资源的最小单位,线程是程序执行的最小单位:线程是依附于进程的,一个进程可以生成多个线程,这些线程拥有共享的进程资源: 二.线程生命周期(相关API)1.5个阶段6种状态 5个阶段:新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead). 6种状态: public enum State { /** * T

JAVA 线程基础(上)

1.进程是操作系统的一个任务是一块包含了某些资源的内存区域操作系统利用进程把它的工作划分为一些功能单元 进程中所包含的一个或多个执行单元称为线程 2.一个进程至少一个线程,线程通常用于在一个程序中需要同时完成多个任务 3.多个线程同时运行只是我们感官上的一种表现,线程是以并发运行的 并发顾名思义就是线程在计算机cpu上运行的时间片段 微观上走走停停宏观上都在运行 这种现象就是并发 //创建线程1 public class textThread extends Thread{ public voi

JAVA线程基础(下)

前面说了如何建立线程 现在我们来看下线程如何工作的 示例: private ServerSocket server; //保存所有客户端输出流的集合 private List<printwriter> allOut;public Server(){ //创建ServerSocket的同时学要申请服务端口这个端口不能与其他使用TCP协议应用程序冲突 否则会抛出异常 server = new ServerSocket(8088); //申请8088端口 allOut = new ArrayLIST