1.进程包含线程,线程组成进程
平常启动的是主线程(main方法),主线程中可以创建子线程,但在启动后,线程间相互独立,互不干扰。线程在栈中。
start只是进入就绪状态,而是由操作系统选择哪个启动
分时操作系统:无法同时做两件事,所以要给每个分时间片,轮流操作,
线程切换(也叫上下文切换会消耗大约1ms,会额外消耗cpu,故多线程切换速度不一定比单线程快
单核情况下,没有cpu浪费时 单线程快一些
什么情况下多线程切换快?1.需要同时进行的操作 2.CPU有严重浪费时,但要看浪费所占的比例,比如图像处理,视频处理可能会用单线程
3.数据库操作 4.网络爬虫
使用哪些情况下的多线程:数据库操作,网络爬虫
主子线程没有关联关系,当前执行的线程(主线程)执行,执行结束早的概率大一点
线程的性能测试工具:Lmbench3
如何减少上下文切换:
linux指令:
统计线程在什么状态uniq -c
如何根据进程id查看线程信息: sudo -u admin /opt/ifeve/java/bin/jstack 31177 > /home/tengfei.fangtf/dump17
文章是我自学java并发编程艺术所记录的。有何问题欢迎指正。



