java线程,进程,多线程
(1)线程和进程
通俗一点,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。
(2)java中实现线程的两种方式,第一种是继承Thread类,和实现Runnable接口。由于java是单继承,所以在使用多线程的时候使用第二种方法较为合适。
(3)线程的生命周期
线程的其中状态,分别为出生状态,就绪状态,运行状态,等待状态,休眠状态,阻塞状态和死亡状态。出生状态是线程创建时候的状态,在用户调用start()方法之前都是出生状态,当用户调用了start()方法后,线程处于就绪状态(可执行状态),当线程得到系统的资源后就会进入运行状态。一旦线程进入可执行的状态以后,就会在就绪状态和运行状态下转换,同时也有可能进去阻塞,等待,休眠或者死亡状态。 处于运行状态的线程调用wait()方法的时候,该线程就进入等待状态,进入等待状态的线程必须调用线程类中的notify()方法才能被唤醒。notifyAll()方法是将所有处于等待状态的线程唤醒。调用Thread类中的sleep()方法的时候,就会进去休眠状态,当一个线程的run()方法执行完毕后,线程就会进入死亡状态。所以在开发的过程中我们经常在run()方法中设置循环来进行耗时操作,无论是PC端界面或者是Android界面都是这样。一般我们用循环的条件的方法来控制线程是否结束。
(3)线程阻塞,同步,交互(通信)
线程的加入,假如存在一个线程A,现在需要插入线程B,并要求线程B先执行完后再继续执行线程A,此时可以调用Thread类中的join方法来完成。
线程都具有各自的优先级,优先级可以表明线程在程序中的重要性,如果有很多线程处于就绪状态,系统就会根据线程的优先级来决定哪个线程先执行。但是并不是意味着优先级底的线程得不到运行,例如,垃圾回收线程它的优先级就非常低。
线程安全线程同步的问题,线程安全的问题来源于,两个线程同时存取单一的对象数据。一般使用synchoronized关键字。可以对对象数据进行加同步锁,也可以对方法进行加同步锁。这样就解决了线程安全的问题。
(4)单线程程序。顾名思义就是只有一个线程运行的程序
(5)多线程程序。就是拥有两个及以上线程的程序,常见需要用到多线程的程序有 1,GUI程序 2,耗时操作程序,例如I/O操作,网络连接,数据库连接及操作,串口接收数据等操作。3,多客户端程序,服务端程序需要处理多个客户端的请求的时候这个时候需要用到。
(6)线程的共享和互斥。当多线程在竞争同一资源的时候,该资源没有加锁就会引发程序数据错误,这个时候就该给这个资源加上锁,具体的需要用到synchronized关键字对资源或者方法进行上锁。被上锁的资源,同时只有一个线程可以操作该资源。
java线程,进程,多线程的更多相关文章
- Java线程和多线程(一)——线程的基本概念
Java 线程是一个轻量级执行任务的处理单元.Java提供了Thread类来支持多线程,开发者在应用中可以创建多个线程来支持并发执行任务. 在应用中存在两种类型的线程,用户线程和守护线程.当我们启动应 ...
- Java线程与多线程教程
本文由 ImportNew - liken 翻译自 Journaldev. Java线程是执行某些任务的轻量级进程.Java通过Thread类提供多线程支持,应用可以创建并发执行的多个线程. 应用 ...
- Java 线程与多线程
Java是一门支持多线程的编程语言! 什么是进程? 计算机中内存.处理器.IO等资源操作都要为进程进行服务. 一个进程上可以创建多个线程,线程比进程更快的处理单元,而且所占用的资源也小,多线程的应用也 ...
- Java线程和多线程(十三)——Callable,Future,FutureTask
在Java多线程之中,Callable和Future的使用时非常广泛的.在之前的文章中,我们了解了关于Java线程池基础的一些内容,知道如何提交Runnable的任务.但是,Runnable的任务是无 ...
- Java线程和多线程(十二)——线程池基础
Java 线程池管理多个工作线程,其中包含了一个队列,包含着所有等待被执行的任务.开发者可以通过使用ThreadPoolExecutor来在Java中创建线程池. 线程池是Java中多线程的一个重要概 ...
- Java线程和多线程(八)——Thread Dump
Java的Thread Dump就是列出JVM中所有激活状态的线程. Java Thread Dump Java Thread Dump在分析应用性能瓶颈和死锁的时候,是非常有效的. 下面将介绍多种不 ...
- Java线程和多线程(三)——线程安全和同步
线程安全在Java中是一个很重要的课题.Java提供的多线程环境支持使用Java线程.我们都知道多线程共享一些对象实例的话,可能会在读取和更新共享数据的事后产生数据不一致问题. 线程安全 之所以会产生 ...
- Java 线程和多线程执行过程分析
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- java线程跟多线程
java创建线程两种方式: 1.继承Thread创建线程 /** * Created by lsf on 16/4/18. */ class NewThread extends Thread { Ne ...
- Java线程和多线程(十五)——线程的活性
当开发者在应用中使用了并发来提升性能的同时,开发者也需要注意线程之间有可能会相互阻塞.当整个应用执行的速度比预期要慢的时候,也就是应用没有按照预期的执行时间执行完毕.在本章中,我们来需要仔细分析可能会 ...
随机推荐
- 在Python中使用moviepy进行视频剪辑时输出文件报错 ‘NoneType‘ object has no attribute ‘stdout‘问题
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 movipy输出文件时报错 'NoneType' ...
- PyQt(Python+Qt)学习随笔:QListView的layoutMode属性和batchSize属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 batchSize属性 该属性是在layoutMode属性设置为Batched时,用于控制每个批量的 ...
- 1、tensorflow 框架理解
2020/10/31 参考:https://blog.csdn.net/mzpmzk/article/details/78636127 1. 两大步骤:定义图define the graph, 进行计 ...
- go中位运算
左移右移 const ( // 将 1 左移 100 位来创建一个非常大的数字 // 即这个数的二进制是 1 后面跟着 100 个 0 Big = 1 << 100 // 再往右移 99 ...
- 蒲公英 · JELLY技术周刊 Vol.33: 前端基础课堂开课啦~
蒲公英 · JELLY技术周刊 Vol.33 页面文件太大?图片过大了吧:页面加载白屏?很有可能是字体文件还没加载完:页面加载时间过长?多半是主进程被阻塞--该怎么办呢?快来小葵,咳咳,「蒲公英」前端 ...
- 项目实战:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出exel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)
需求 1.通道使能.选择.更改通道名称.设置显示颜色 2.采样率可设置(Sa/s/chj) 3.单位换算,按照给定的进行换算 4.对通道可进行设置补偿值 5.通道取消可动态显示和隐藏,并可 ...
- sql 遍历list
<select id="findadminSaleList" parameterClass="java.util.Map" resultClass=&qu ...
- mysql主从同步错误
一.主从同步报错 mysql> show slave status\G; *************************** 1. row ************************* ...
- 从函数到包的Python代码层次
代码层次 Python是一门脚本语言,新建一个.py文件,写点代码,就可以跑起来了,无论放哪都可以.比如where.py文件: print("Where am I?") 那么问题来 ...
- TCP 百万并发 数据连接测试 python+locust
过程笔记和总结 尝试一.locust 测试百万Tcp并发 另一种方式是使用jmeter 基础环境 服务端 虚拟机:Centos7.2 jdk 1.8 客户端 虚拟机: Centos7.2 python ...