当前位置:网站首页>多线程(1)
多线程(1)
2022-07-31 05:19:00 【欧粒粒】
1.线程的实现方式:
(1)内核线程:Java 中的线程,是基于内核线程的轻量级实现(简单来说,是轻量级的进程。这样相较于进程,创建,调度,销毁效率要高很多)
(2)用户线程:由程序自己来实现线程, 包括线程的调度等等。
2.进程和线程的关系是什么?
(1)多个进程的内存是隔离开的,一个进程中的多个线程,可以共享内存(进程包含线程)
(2)进程是系统分配资源的最小单位;线程是系统调度cpu执行的最小单位
(3)线程的创建,销毁代价比进程小(状态转换进程的开销大于线程)
(4)线程(有bug)可能会造成整个进程挂掉;进程间是独立运行(可能存在进程通信)
3.多线程的好处:
(1)充分利用cpu资源,提高执行效率
(2) io等阻塞时(如果希望能同时接收输入)
多线程的缺点:
(1) 线程的创建/销毁也是具有一定的系统开销:所以一般用于执行耗时比较长的任务。
(2)增加编码的复杂程度:和se代码执行顺序不-样的地方。
4.线程的状态
5.创建线程的方法:
(1)继承Thread
(2)实现Runnable接口,重写Runnable的run方法
Theard t=new Thread(new Runnable(){
@Override
public void run(){
Sysem.out.println("匿名内部类run");
}
});
t.start();
(3)实现Callable接口
6.Thread中,start() 和run()有什么区别?
(1) start: 启动线程的方式
(2) run: 属于线程任务的描述。线程对象.run,只是属于普通对象的实例方法调用,没有启动线程
7.java进程中,至少要有一个非后台线程(用户线程)存活,进程才不会退出。
8.线程的属性:
设置线程的名称: new Thread(Runnable任务描述对象, String线程名称)
设置后台线程: thread.setDaemon(true)
System. out. println(t. getName());//获取线程名称
System. out . println(t . getState());//获取线程状态
System. out . println(t. isAlive());//是否存活:如果启动后销毁前,都是存活
9.void join()
使用join后,两个线程并发并行随机执行的方式,就变为有一定顺序。
当前线程(t. join在哪个线程执行,就是谁)等待,直到线程引用执行完毕。
当前线程等待,最多等待给定的毫秒数,或者线程引用对象死亡
边栏推荐
猜你喜欢
企业级 DevOps 究竟是什么?
vs2022 xlua 集成第三方库编译报错Generator Visual Studio 15 2017 could not find any instance of Visual Studio.
WIN10,配置adb环境
The content of the wangeditor editor is transferred to the background server for storage
螺旋矩阵Ⅱ
IDEA overview and installation and debugging
DSPE-PEG-Thiol DSPE-PEG-SH phospholipid-polyethylene glycol-thiol liposome for later use
Session和Cookie,Token
Unity软件中UGUI和NGUI的多语言开发
概率论相关笔记
随机推荐
【内网开发日记】用websocket手搓一个聊天软件
C语言结构体(必须掌握版)
Qt TreeView 问题记录
哈希表基础
Learning and understanding of ROS service programming
The content of the wangeditor editor is transferred to the background server for storage
Session和Cookie,Token
在 AWS 上从零开始设置 Incredibuild 构建系统
力扣151. 颠倒字符串中的单词
Unity加载GIf动画
测试CSDN积分需求
DOM操作案例1-点击,使表格的颜色切换(点击单元格,整行或整列颜色切换)
ROS subscription to multiple topics time synchronization problem
CSDN上markdown编写的一些便捷操作
读写文件,异常,模块和包
DOM操作-案例:切换背景图片
英语学习笔记
crontab timing operation
PyTorch Study Notes 08 - Loading Datasets
DOM操作-通过关系来获取元素