线程
来源:互联网 发布:网络用语然是什么意思 编辑:程序博客网 时间:2024/06/01 08:59
一. 进程:程序在处理机中的一次运行。一个进程既包括其所要执行的指令,也包括了执行指令所需的系统资源,不同进程所占用的系统资源相对独立。所以进程是重量级的任务,它们之间的通信和转换都需要操作系统付出较大的开销。 线程:进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己基本上不拥有系统资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。所以线程是轻量级的任务,它们之间的通信和转换只需要较小的系统开销。
二.线程的分类:守护线程和用户线程
他们几乎每个方面都是相同的,唯一的区别是半段虚拟机何时离开
用户线程:JVM在它所有非守护线程都已经离开后自动离开。
守护线程:是用来服务用户线程的,如果没有其他用户线程运行,那么就没有可服务对象,也就没有理由继续下去。java垃圾回收线程就是一个典型的守护线程,当程序中不再有任何运行中的线程时,程序就不再产生垃圾,垃圾回收也就无事可做,所以,当垃圾回收线程是JVM仅剩的线程时,JVM会自动离开,结束程序的运行。
三.线程的状态
JDK中用Thread.State枚举表示了6种状态。线程可以处于下列状态之一:
NEW
至今尚未启动的线程处于这种状态。RUNNABLE
正在 Java 虚拟机中执行的线程处于这种状态。BLOCKED
受阻塞并等待某个监视器锁的线程处于这种状态。WAITING
无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。TIMED_WAITING
等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。TERMINATED
已退出的线程处于这种状态。
在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态,它们并没有反映所有操作系统线程状态。
1.创建线程的两种方法:
public class MyRunner implements Runnable {public void run(){for(int i=0;i<100;i++){System.out.println("MyRunner:"+i);}}
public class MyThread extends Thread{public void run(){for(int i=0;i<100;i++){System.out.println("MyRunner:"+i);}}3.启动线程:
public class Text {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("主线程开始执行:"); Thread th1 = new Thread(new MyRunner()); th1.start(); System.out.println("启动一个新线程:(th1)"); Thread th2 = new Thread(new MyThread()); th2.start(); System.out.println("启动一个新线程:(th2)");}}
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- (收藏)行人检测(Pedestrian Detection)资源
- Mysql数据库应用中简单的封装
- 代码检查错误列表总结
- python学习六:异常处理、map/reduce/filter内置函数、python集合(set)类型、元组转列表
- Maximum Subarray
- 线程
- Spring+Quartz的集群配置
- 困难重重,终于在UBUNTU12.04 下对于JAVA 安装成功 关键词:update
- [LeetCode] Binary Tree Level Order Traversal
- .Net类库预定义委托之Predicate
- 快速掌握23种设计模式(状态,策略,观察者)
- Kmedoids算法Java实现(可处理噪声)
- c++纯虚函数
- Android访问WebService提示错误