JAVA基础——线程
Posted huan欢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA基础——线程相关的知识,希望对你有一定的参考价值。
1.单线程和多线程
单线程:.一个程序 只有一条线程(主线程main)
多线程:一个程序 除了一条主线程main 以外 还拥有很多的子线程
- 效率高
- 开销少
- 容易调度(启用)(CPU直接调度)
- 高并发性
2.线程和进程
线程:.程序运行中的一条执行路径,是组成进程(程序)的 一个进程 必须拥有一条线程(主线程(main))
- 线程不能离开进程而独活
- 系统不为线程分配资源
- 多个线程共享进程的资源
进程:操作系统上运行的一个程度(可以简单的理解成一个程序)
- 进程是程序运行的基本单位(一个程序 必须拥有一个进程(可以拥有多个))
- 进程拥有独立的系统资源(系统为为其主动的分配资源 : cpu 磁盘……)
3.线程和进程的关系
进程:进程是线程的容器,一个进程可以拥有多个线程
线程:线程是进程的实体,一个线程必须拥有一个父进程
- 系统会把资源分配给进程 同一个进程中的所有线程 共享次资源
4.线程和进程区别
1.进程拥有系统资源;线程不拥有系统资源,它和其他线程共享所在进程的资源
2.进程拥有独立的数据空间;线程直接共享相同的数据空间
所以:
- 进程可以独立进行,线程必须在进行中运行
- 进程的创建、撤销、和切换,其系统开销要比线程大
- 线程之间通信要比进程之间通信要简单
5.并发和并行
并发:多个线程 更具CPU的调度情况 执行
并行:多个线程 同时执行
6.线程的创建
方法一:
继承Thread类
- 创建一个类继承Thread类
覆写run方法(子线程做的事情 写在run方法中)
启动线程(调用start())
方法二:
实现Runnable接口
- 创建一个类实现Runnable接口
- 覆写run方法(子线程做的事情 写在run方法中)
- 启动线程(调用start())
注意:实现Runnable接口,只是拿到了run方法,通过这种方式创建的线程,不是一个真正的线程
7.线程的常用方法
currentThread():获取当前线程对象
sleep():休眠: 可以让线程睡一会
yield():礼让 当前线程 主动放弃Cpu的资源 让其他线程去抢占 但是 放弃的时间不确定 有可能刚刚让出去 马上自己又抢回来
setPriority():设置优先级
优先级:1~10 10最高
默认是5;
join():调用以后 等待代用的线程结束以后 再继续执行
isAlive(): 判断线程是否活着
interrupt():中断线程(并不是说调用以后线程就停止 该方法 仅仅知识修改了线程中断的标识)
默认的中断标识:false线程被中断: 中断标识改为true
8.线程的生命周期
线程的生命周期:从线程的创建到线程的结束
9.同步
synchronized:同步锁,保证资源,同一时间,只能被同一条线程访问
以上是关于JAVA基础——线程的主要内容,如果未能解决你的问题,请参考以下文章