当前位置:网站首页>多线程(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在哪个线程执行,就是谁)等待,直到线程引用执行完毕。
当前线程等待,最多等待给定的毫秒数,或者线程引用对象死亡
边栏推荐
猜你喜欢

Getting Started with MySQL: The Case Statement Works Well

浏览器中的画中画(Picture-in-Picture)API

Learning and understanding of ROS service programming

2021年开发人员的绊脚石:构建时间长

The content of the wangeditor editor is transferred to the background server for storage

The solution to the IDEA console not being able to enter information

DOM操作-通过关系来获取元素

Qt TreeView 问题记录

Log jar package conflict, and its solution

file和stat命令的使用,文件类型:代表字符,以及英文
随机推荐
C语言数组的深度分析
螺旋矩阵Ⅱ
ES6-对象
记一次QT 2D 画图 实现3D动态效果
浅谈音视频开发入门基础及进阶资源分享
mobaxterm 编码问题解决
安装显卡过程中遇到问题汇总
【Rhapsody学习笔记】3:Dishwasher
面试总爱问的一个问题,你为什么离职上一份工作?
【博学谷学习记录】超强总结,用心分享 | 软件测试 测试基本概念、模型与用例
The content of the wangeditor editor is transferred to the background server for storage
钉钉H5微应用免登鉴权
fdisk分区,gdisk添加磁盘,parted进行磁盘分区,parted新增分区,临时挂载和永久挂载
变更管理与 DevOps —— 二者同时进行吗?
离线安装activeMq
About iframe
a:自我介绍
对称加密和非对称加密
Incredibuild 宣布支持 Yocto
Unity软件中UGUI和NGUI的多语言开发