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线程和多线程(十五)——线程的活性
当开发者在应用中使用了并发来提升性能的同时,开发者也需要注意线程之间有可能会相互阻塞.当整个应用执行的速度比预期要慢的时候,也就是应用没有按照预期的执行时间执行完毕.在本章中,我们来需要仔细分析可能会 ...
随机推荐
- 米酷CMS 7.0.4代码审计
工具:seay源代码审计系统 源代码:网上很好找,这里就懒得贴上了,找不到的话可以给我留言 后面一段时间会深入学习安全开发,代码审计,内网渗透和免杀,快快成长. 审这个系统是因为在先知上看到一篇审它老 ...
- flex:align-items和align-content的区别
属性值 align-items的属性值有:baseline.center.flex-end.flex-start.stretch.inherit.initial.unset align-content ...
- element ui的el-radio踩坑
1.html 1 <div class="listPeopleDetail"> 2 <div class="item" v-for=" ...
- 【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)
问题描述 是否可以用Java代码来管理Azure blob? 可以.在代码中加入azure-storage-blob依赖.即可使用以下类操作Azure Storage Blob. BlobServic ...
- ThreadLocal原理记录,别被坑了!!
简介 ThreadLocal的用处 ThreadLocal是为了将数据记录一份到某个线程里,确保该数据线程安全 例如数据库的Connection放入ThreadLocal,一个事务会用到很多DAO,但 ...
- 题解-洛谷P7114 字符串匹配
题面 洛谷P7114 字符串匹配 \(T\) 组测试数据.给定字符串 \(S\),问有多少不同的非空字符串 \(A\),\(B\),\(C\) 满足 \(S=ABABAB...ABC\) 且 \(A\ ...
- 算法——n皇后问题
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解法包含一个明确的 n 皇后问题的棋 ...
- 模块urllib requests json xml configparser 学习笔记
发起http请求 获取返回值 返回值是字符串 第三方模块安装 pip install requests 返回值格式 xml html jaon json 功能 loads 字符串>&g ...
- bilibili插件推荐
目前看到的好的插件就两个,现在来介绍一下. 第一个是 哔哩哔哩助手 这是它的功能,这里就以截图来给大家看 以上为这个插件的所有功能. 点击前往官网 第二个是 bilibili网页端添加APP首页推荐 ...
- Windows 64位下安装php的redis扩展(php7.2+redis3.0)
前置条件:为php7.2搭建redis扩展的前提是在本机上已经成功搭建好php的运行环境,我的电脑的运行环境时 apache2.4+mysql5.5+php7.2. 操作系统为64位,编译环境为Mic ...