标签:状态 调用 Thread 概念 并发 Runnable 线程 new 多线程
学习目标
上天:
-锻炼解决问题技能
-高并发 缓存 大流量 大数据量
入地:
-面试
-JVM OS算法 线程 IO
概念:
什么是线程?
-每一个进程中有不同的执行路径(简单来说,线程就是进程的最小执行单元)
如何创建一个线程?有几种创建的手段?
【1】, 一个类继承Thread(extends Thread)并重写其中的 run 方法。
使用的时候,直接new出该类,调用类中的 run,这个就是一个线程了,但并未启动!
【2】,一个类实现了Runnable接口(implement Runnable),并重写了 run 方法
使用的时候,就需要new出一个线程出来,并且把 new 该类为对象作为参数,就可 start 启动了。
【3】,使用Lambda表达式创建:
new Thread(()-> {
System.out.println("");
}).start();
【注意】:创建对象了直接调用了 run 方法,在这个时候,已经有一个线程了。
如果还需要调用start启动线程的话,就有两个线程同时交替执行了。
线程的常用方法:
1. 睡眠:sleep
当前线程暂停一会儿,让别的线程运行一段时间
2. 谦让:yield
当前线程退出一下,离开CPU一段时间,回到等待队列里,先让别的线程执行。
3. 加入:join
当前线程 A 调用该方法,请别的线程 B 加入到该线程中执行,B 执行完了,才到 A 线程执行!
线程的状态:
-new 线程的创建
-start 启动,就会被线程调度器执行,之后就进入了整个是Runnable的状态(就绪状态)
Blocked,阻塞状态,等待进入同步代码块的锁:
-synchronize,没有获得锁的状态。获得锁的状态就进入 了就绪状态Ready
TimedWaiting,等待状态:
调用Thread.sleep(time),o.wait(time),t.join(time),LockSupport.parkNanos(),LockSupport.parkUntil() 方法进入
时间一旦结束,就自动关闭。
Waiting,等待状态:
调用o.wait(),t.join(),LockSupport.park(),方法进入等待状态
调用o.notify(),o.notifyAll(),LockSupport.unpark() 方法回到了、Runnable状态
标签:状态,调用,Thread,概念,并发,Runnable,线程,new,多线程 来源: https://www.cnblogs.com/hellostar/p/16413488.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。