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爬虫学习遇到的问题
老猿在学习Python中爬虫知识时遇到了如下问题: 爬取网页内容后写入文件报错UnicodeEncodeError: 'gbk' codec can't encode的问题解决方案 urllib.re ...
- 乌云wooyun网站硬盘复活
AWD比赛防止没有网络,在移动硬盘里面准备一个乌云漏洞库. 之前也想过弄一个乌云的镜像网站,无奈学生机性能太低下了,部署到公网上服务器存储空间都不够,只能部署在本地硬盘了. 乌云镜像的开源地址:htt ...
- 3、pytorch实现最基础的MLP网络
%matplotlib inline import numpy as np import torch from torch import nn import matplotlib.pyplot as ...
- 数组编程题(github每日一题)
/** * 随机生成一个长度为 10 的整数类型的数组,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20], * 将其排列成一个新数组,要求新数组形式如下,例如 [[2, 3, 4 ...
- STM32系统时钟RCC(基于HAL库)
基础认识 为什么要有时钟: 时钟就是单片机的心脏,其每跳动一次,整个单片机的电路就会同步动作一次.时钟的速率决定了两次动作的间隔时间.速率越快,单片机在单位时间内所执行的动作将越多.时钟是单片机运行的 ...
- centos 7系统安装mysql 8.0
一.关闭防火墙 [root@node01 ~]# systemctl disable firewalld [root@node01 ~]# systemctl stop firewalld [root ...
- IOS开发中实现UITableView按照首字母将集合进行检索分组
在开发公司项目中遇到了将图书目录进行按照首字母分组排序的问题 1.在项目添加解析汉字拼音的Pinyin.h文件 /* * pinyin.c */ #define HANZI_START 19968 # ...
- 第一次软件工程与UML的编程作业
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...
- 算法(Java实现)—— 二分搜索算法
二分搜索算法 有序数列才可用二分查找算法 思路分析 思路分析 首先确定该数组的中间下标mid = (left + right)/ 2 然后让需要查找的数findVal和arr[mid]比较 findV ...
- mysqldump备份数据
create database test; use test; create table test(id int,name char(8)); insert into test values(1,'p ...