多线程
我的故事和老酒
从现在起做个爱学习的人
展开
-
学习笔记之Thread是什么?
Thread类的每一个实例代表一个jvm中的线程。(java中除此之外的任何东西都不代表线程,见源码注释的第一行) start()之后,且未结束。 Runnable/Callable都不是线程。 Thread.start()后,jvm中就增加: 一个工人/执行流 一套方法栈 Java最基本的执行单元是方法,多个方法的栈称为方法栈,一个线程拥有一个方法栈(一个方法栈对应一个线程),拥有方法栈是这个线程能做事情的一个标志,最开始默认的是主线程main。 main线程的底部是xxx类.m原创 2020-09-22 13:21:11 · 344 阅读 · 0 评论 -
学习笔记:为什么需要多线程?
CPU/内存/IO的巨大性能差异;(cpu/内存太快了,io太慢了) 多和cpu的发展; 线程的本质是一个可执行代码的工人。(多一个线程就相当于jvm里面多了一个可以看代码然后执行工作的工人,并且多个工人可以同时进行工作) 优点:多个执行流,并发执行。 缺点: 占用资源:每个线程有独立的方法栈。 慢:切换上下文典型值1us vs 0.3ns/cycle。 能不能让上下文切换尽可能少? 协程——用户态线程(不切换cpu,多内容在同一个cpu内执行,要这么做需要自己重写一个调度器。原创 2020-09-21 12:37:23 · 162 阅读 · 0 评论