Java多线程
在一开始,我们先听一下三个概念:程序、进程、线程,挺像的,意思却大不相同,首先是程序,我们写的代码,只要能运行,都可以称为程序,它是一个静态的概念,当程序运行起来,就有了进程这一概念,进程包含线程且至少存在一个。以上是三者之间的区别和联系。不算难,正是因为进程不止一个线程,所以才有了多线程这一概念。
创建线程
-
继承Thread类,重写run()方法,调用start方法
-
实现Runnable接口,实现run()方法,创建线程对象,调用start方法
线程不一定立即开启,听从CPU调度安排;
run()方法是线程的执行体;
获取线程当前本身
Thread.currentThread().getName();
多个线程操作同一个资源会导致数据紊乱,线程并发问题。
lamda表达式
首先,必须要是函数式接口,才可以使用lamda表达式。
函数式接口:任何接口,只包含一个抽象方法
(param)->{core};//core表示核心代码
线程状态
新生状态:刚new完,新生
就绪状态:准备运行
运行状态:顾名思义,运行中
阻塞状态:运行一半,出现问题,进阻塞,问题解决后转为就绪
死亡状态:运行结束,线程死亡
线程只能启动一次,死亡后无法再次开启
守护线程
daemon 守护线程:只要正常用户线程结束,不需要管守护线程,则结束虚拟机。
线程同步
synchronize
死锁
多个线程互相占有对方需要的资源,形成僵持,会导致程序卡死。
冷知识(反话)
感觉线程总结的知识点比较少,但我又不想让这块儿显得空荡荡的,所以我继续总结一下这两天新学到的知识,大多数关于IDEA,因为这两天刚开始用IDEA,之前一直在用eclipse,为了适应当下,自己在熟悉IDEA的操作。
首先是快捷输出,学习Java基础,主方法要写很多次,这是很正常的,在IDEA只需要打出public static void main四个单词的首字母,再点一下回车键,主方法就自动帮我们生成了,或者,你可以单独的写一个main,点击回车键。相同的用法还有很多,比如sout+回车可以生成我们常写的System.out.println();输出语句。soutm+回车生成System.out.println(“描述所在类中的所在方法”);
紧接着,是很多快捷键,下面挑重要的进行列举说明。
类的结构视图:alt+7
查看类的源码:Ctrl+鼠标左键
格式化代码:Ctrl+alt+L
查找:Ctrl+F
跳转到导航栏:alt+home
搜索:double shift
运行:shift+F10
调试:shift+F9
查看断点:ctrl+shift+F8
运行全部:double Ctrl
注释:Ctrl+/
块注释:Ctrl+shift+/
一些比较常见的保存、复制、粘贴、撤销、全选、剪切,想必大家都耳熟能详了,就不列举了。一气儿把所有快捷键全记住是不现实的,我们要在日常的工作和学习中对其进行熟悉和巩固。
每日一弹
IDEA快捷键:
alt+insert:创建
alt+enter:选项