java多进程 -CD7-孙鑫-(1)-程序/进程/线程/设置后台线程/将当前线程暂停
2015-03-31 22:03
399 查看
程序、进程和线程
程序是计算机指令的集合,它以文件的形式存储在磁盘上。进程:是一个程序在其自身的地址空间中的一次执行活动。
进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。
线程:是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。
注意:在一个地址空间中至少有一个线程
多个任务时采用多线程而不是多进程?因为进程是占用独立的地址空间,进程切换时需要交换内存空间,多线程共享同一个存储空间,所以多线程切换只需要改变程序的执行路线和局部变量,切换的效率远远高于进程之间的切换效率。线程是占用资源代价比较小,这样对服务器端资源的利用效率的提升合理利用都有好处
[code]class MultiThread { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); //获取当前的线程并且获取它的名字 System.out.println("main方法线程的名字" + Thread.currentThread().getName()); } } class MyThread extends Thread { //run方法是线程的入口函数 public void run() { System.out.println(getName()); } }
解析:先打印出main方法线程的名字再打印出myThread线程的名字
操作系统分配时间片, 当我们调用start()时,main方法所在的时间片没有到期所以继续运行,打印他所在线程的名字,当main方法所在线程到期了,jvm 调用run方法
变形:将myThread设置为后台线程,借助方法setDaemon(),参数:true就是后台线程;该方法在线程启动之前调用也就是说在myThread调用之前调用。
jvm在仅剩下后台进程时jvm会退出
[code]class MultiThread { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.setDaemon(true); myThread.start(); int index = 1; while(true) { if(index++ == 500) break; //获取当前的线程并且获取它的名字 System.out.println("main方法所在的线程的名字:" + Thread.currentThread().getName()); } } } class MyThread extends Thread { //run方法是线程的入口函数 public void run() { while(true) { System.out.println(getName()); } } }
该例子结果是main线程名字和myThread线程的名字交替打印出来,当满足break条件了,main线程停止了myThread这个后台线程也停止了。
[code]class MultiThread { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.setDaemon(true); myThread.start(); int index = 1; while(true) { if(index++ == 1000) break; //获取当前的线程并且获取它的名字 System.out.println("main方法所在的线程的名字:" + Thread.currentThread().getName()); } } } class MyThread extends Thread { //run方法是线程的入口函数 public void run() { while(true) { System.out.println(getName()); yield();//将当前线程暂停 } } }
结果是当我们轮到myThread线程就切换到main线程打印,当main线程时间片消耗完再打印myThread线程
相关文章推荐
- java 孙鑫 第五课 Java 的多线程,程序、进程和线程的概念
- Java开发常用代码----线程暂停(让程序停止一段时间)
- java学习5---Java 的多线程,程序、进程和线程的概念
- Java获取当前进程的所有线程
- java多线程基础(6)-调度方式之暂停当前线程方式5-等待(wait)
- java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞
- ABAP--如何暂停其他进程的处理,加速当前程序的处理速度
- JAVA 用户线程,后台进程
- java多线程基础(3)-调度方式之暂停当前线程方式2-放弃
- java多进程 -CD7-孙鑫-(2)-java对多线程的支持,深入理解
- java多线程基础(5)-调度方式之暂停当前线程方式4-连接线程(join)
- ABAP--如何暂停其他进程的处理,加速当前程序的处理速度
- [Java 09 多线程] 线程是指一个进程在执行过程中可以产生更小的程序单元
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常
- java多进程 -CD7-孙鑫-(5)
- 今天学习了JAVA程序、线程、进程的区别
- Java程序中获取当前进程的进程ID
- java后台进程和线程优先级
- [Java 09 多线程] 线程是指一个进程在执行过程中可以产生更小的程序单元
- java多线程基础(4)-调度方式之暂停当前线程方式3-线程休眠(sleep)