传智播客-多线程(1)-java里的进程和线程
来源:互联网 发布:windows rt8.1 编辑:程序博客网 时间:2024/05/17 00:58
对于开发人员而言,进程和线程是两个耳熟能详的概念;面试笔试遇到这类题的概率也很高。有人说工作中很少用到多线程,因为线程多的话难以掌控,能不用则不用;但是也有很多业务需求不得不用多线程实现,最常见的一个是多线程下载(当然这个涉及的不只多线程这一个技术,还有io和网络连接)。
在多任务系统中,每个独立执行的程序称为进程,也就是“正在进行的程序”。我们现在使用的操作系统一般都是多任务的,即能够同时执行多个应用程序(想想,我们是不是经常开着电脑一边听歌看小说一般聊QQ)。不过实际情况是,操作系统负责对CPU等设备的资源进行分配和管理,虽然这些设备某一时刻只能做一件事,但以非常小的时间间隔交替执行多个程序,就给人以同时执行多个程序的感觉。很多相关的书提到这个内容的时候都会提到时间片,一个意思。
线程可以说是“隶属于”进程,一个进程中可以有一个或多个线程,一个线程就是一个程序内部的一条执行线索。如果要在一个程序中实现多段代码同时交替运行,就需要产生多个线程,并指定每个线程上所要运行的程序代码,而这就是多线程。
如果我们写了一个java类,里面有个main方法,当执行这个main方法时,就等于执行了一个进程,执行时可以从“任务管理器”里看到多了一个javax.exe的进程,调用了几个main方法就执行了几个javax.exe进程。
java开发中,如果一个main方法里只有常规代码,即没有Thread这样的代码,可以认为这个main方法是一个单线程程序(虽然利用IDE,可以直接stop这个程序,如果在cmd里运行,可以关掉cmd窗口或者ctrl+C强行中止,但是main自己本身是没有办法自行stop或者close的)。即该main方法此时既是线程也是进程,可以调用Thread.currentThread().getName(),打印出的结果是“main”。
当然,有Thread这样的代码也不一定就是多线程,一定要Thread.start(),否则只是声明了一个线程对象而已,并没有开启这个线程,也就达不到多线程的效果。开启了多线程的main方法自己被称之为主线程。多线程一个最起码的优势就是在有程序进入死循环或者执行时间过长中途需要中止时,可以明确中止该程序,例如复制文件时可以取消;有必要的话还可以保存已执行的内容,例如多线程的断点续传。
多线程通常会有安全问题,尤其是多个线程需要对同一个对象执行各种操作的时候,而根源就是,在一个进程中各线程的“多段代码同时交替运行”,简单说,就是多线程里的代码句不是按我们写定的顺序依次执行的,jvm有自己的执行机制,通常是一些提高并发性能的机制,主要是计算某线程的空闲时间,然后根据计算出的数据在多个线程的代码句间跳转执行。
- 传智播客-多线程(1)-java里的进程和线程
- Java多线程(一)进程和线程的基础知识
- [java多线程]进程和线程
- 多线程1-线程和进程的实现
- Java(线程的概念)(线程和进程的比较)(多线程的优点)
- [疯狂Java]多线程:进程和线程的概念
- Java 多线程(PART I)进程和线程
- Java多线程之 -- 进程和线程
- java多线程之进程和线程
- android里的进程和线程
- java线程和进程(运用多线程的小球碰撞游戏)
- 进程和线程,多线程
- Java并发编程:(1)进程和线程的由来、进程的创建、线程的创建
- 进程与线程,java多线程的应用
- 多线程的那些事(1)进程和线程是什么
- 多线程(一) 进程和线程的基本概念
- 多线程-进程和线程的概述
- (一)java并发编程--计算机中的进程和线程(多进程和多线程)
- 批处理设置IP
- 在VM arguments中设置参数来控制代码的执行逻辑
- 我你吵一吵,其实这样更能明白自己在他人中的形象的真实性以及自己的一些不足之处
- VS2010简介
- oracle 10g 表分区技术 影响测试
- 传智播客-多线程(1)-java里的进程和线程
- GUI编辑器
- 取坐标及变换
- 通过连接实现层级函数(4)
- C++面试题(有我做的答案,参考)
- struts2 spring hibernate3 的最精细的整合
- 疯狂java讲义----java顺序循环与java数组
- Symbian S60平台中状态面板的几种常用样式
- wampserver下配置虚拟主机 实现多站点支持