谈谈java线程
来源:互联网 发布:淘宝退差价是几天之内 编辑:程序博客网 时间:2024/05/22 09:38
我们都知道在Windows下一个JVM对应一个进程,一个进程有多个线程,感觉很多人对线程还是有很多迷惑,在这里在详谈下java中的线程。
首先是线程的分类,线程可以分为守护线程和非守护线程,通俗的说守护线程就是系统自带的运行的线程,非守护线程就是我们自定义的线程,在main方法启动的时候就会启动一个非守护线程,在这里也想到一个问题,怎么判断JVM是否存活?其实就是看他的非守护线程是否存活,那么如何判断非守护线程是否存活呢,我们可以一层一层的去找他的父线程,这样就会找到是否还有线程存活。
接下来说一下如何创建一个线程,第一种方法是继承java.lang.Thread类,第二种方法是实现java.lang.Runnable接口,在说说线程本身还有什么东西,线程在JVM里,有个指向特殊地址的指针,就是指向下一个需要执行方法的地址,还有操作数栈。其实线程就是调用方法的,每调用一个方法,需要一个线程去执行,这个方法需要一个操作数栈才能运行方法,所以线程在执行方法的时候要有个栈空间,虚拟机要为这个栈分配一块空间,这也是为什么我们NEW很多线程的时候,速度性能会下降,它会为这个方法分配空间,具体怎么分配空间呢,就是看这个方法里面有多少个参数,多少个变量,去分配多少空间,线程就会在里面执行,通过JVM的指令执行,通过操作数栈来计算,计算的接口就会返回(如果这个方法有返回值,这个变量的属性就会赋给它)。
最后在说下多个线程的问题,处理多个线程的时候NEW会很慢,可以用线程池来解决,但是线程池也有个问题,如果线程池里有50个线程,但是我生产的是100个,这就要引用系统的拆分,用异步的形式拆分,可以用MQ解决异步。
大概就是这些,还有关于线程安全问题在上篇博文中已经谈过了,如有异议,欢迎指正!
- 谈谈java线程
- 谈谈java中的线程(初级概念)
- 谈谈java线程锁synchronized关键字和volatile关键字
- 谈谈守护线程
- 谈谈windows线程栈
- 谈谈进程与线程
- 谈谈Vector的线程安全
- 谈谈线程池的使用
- 从Java多线程实现“生产者-消费者”模型来谈谈操作系统中线程状态的转换
- [置顶]谈谈new Thread的弊端及Java四种线程池的使用
- 谈谈new Thread的弊端及Java四种线程池的使用
- 从java多线程实现“生产者-消费者”模型来谈谈操作系统中线程状态的转换及线程同步的总结
- 谈谈Java的学习方法
- JAVA:谈谈Thread Pool
- 谈谈Java中的类
- 谈谈Java中数组
- 谈谈LAMP与Java
- 谈谈java 反射机制
- Shader之Photoshop Color效果
- Android中broadcastreceiver发送广播信息
- 凭兴趣求职80%会失败,为什么 ?
- Ubuntu Core在高通dragon board上的展示(视频)
- vc6.0转换为vs2008后代码编译不通过,error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...
- 谈谈java线程
- UVa 1640 The Counting Problem
- 结构体的理解
- 进阶篇:3.2)钣金件设计指南
- 原码,反码,补码,移码
- 基于MFC单文档下调用opencv库并将图片效果显示在单文档窗口
- 浅谈~ 算法的艺术
- bzoj 3674 (可持久化线段树+并查集按秩合并)
- Java上传下载完全解析(一)