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线程和多线程(十五)——线程的活性
当开发者在应用中使用了并发来提升性能的同时,开发者也需要注意线程之间有可能会相互阻塞.当整个应用执行的速度比预期要慢的时候,也就是应用没有按照预期的执行时间执行完毕.在本章中,我们来需要仔细分析可能会 ...
随机推荐
- 第14.13节 BeautifulSoup的其他功能导览
前面<第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息 >.<第14.10节 Python中使用BeautifulSo ...
- PyQt(Python+Qt)学习随笔:QTableView的showGrid属性
老猿Python博文目录 老猿Python博客地址 showGrid属性用于控制视图中数据项之间是否显示网格,如果该属性为True,则绘制网格:如果该属性为False,则不绘制网格. showGrid ...
- CQUT校园通知网消息爬虫+Server酱微信推送
上了大三之后发现很多学校的通知都不会发送到班群里面,导致自己会错过很多重要信息,故想写一个爬虫来获取从当前时间之后的新的通知标题,并推送到微信上. PS:推送到微信上这个想法来源是,很多时候都需要将消 ...
- XSS挑战赛(2)
进入第六关 简单判断过滤情况 <>script"'/ 查看源代码 可以看到第二个红框部分跟之前类似,闭合双引号尝试进行弹窗 "><script>ale ...
- 分布式存储系统-HDFS
1 HDFS 架构 HDFS作为分布式文件管理系统,Hadoop的基础.HDFS整体架构包括:NameNode.DataNode.Secondary NameNode,如图: HDFS采用主从式的分布 ...
- 敏捷开发(Scrum)与敏捷测试
1.敏捷测试流程和传统测试流程 软件测试是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性 ...
- 如何实现 token 加密(来自github每日一题)
需要一个secret(随机数) 后端利用secret和加密算法(如:HMAC-SHA256)对payload(如账号密码)生成一个字符串(token),返回前端 前端每次request在header中 ...
- CSS全览_选择符+特指+单位+字体
CSS全览_选择符+特指+单位+字体 目录 CSS全览_选择符+特指+单位+字体 1. CSS样式 2. 选择符 3. 特指度和层叠 4. 值和单位 5. 字体 作者: https://www.cnb ...
- AcWing 1194. 岛和桥
\(f[s][i][j]\) 表示一条有向路径(不经过重复点),当前路径点集合为 \(s\),最后两个点是 \(j\) → \(i\) 的最大价值 \(g[s][i][j]\) 类似,不过是方案数. ...
- Android全面解析之Context机制
前言 很高兴遇见你~ 欢迎阅读我的文章. 在文章Android全面解析之由浅及深Handler消息机制中讨论到,Handler可以: 避免我们自己去手动写 死循环和输入阻塞 来不断获取用户的输入以及避 ...