当前位置:网站首页>多线程(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在哪个线程执行,就是谁)等待,直到线程引用执行完毕。
当前线程等待,最多等待给定的毫秒数,或者线程引用对象死亡
边栏推荐
猜你喜欢
随机推荐
vs2022 xlua 集成第三方库编译报错Generator Visual Studio 15 2017 could not find any instance of Visual Studio.
读写文件,异常,模块和包
VS2019配置配置项目属性自定义输出目录与中间目录
ES6-箭头函数
哈希表基础
记一次QT 2D 画图 实现3D动态效果
力扣.找到打字符串中所有字母异位词
常见网络攻击与防御方法
Rejection sampling note
力扣.字母异位词分组
企业级 DevOps 究竟是什么?
Pytorch study notes 13 - Basic_RNN
浅谈音视频开发入门基础及进阶资源分享
WIN10,配置adb环境
可下载视频可下载图片的函数
When solving background-size:cover, the picture is covered but not displayed completely?
Session和Cookie,Token
Pytorch Daily Practice - Predicting Surviving Passengers on the Titanic
小型网站组建(ENSP)
ES6-模块









