java线程和进程回顾

进程和线程总结:

线程概念:线程是程序的基本执行单元。

 

当操作系统在执行一个程序时,会在系统中统一建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口。因此,在操作系统中运行的任何程序至少有一个主线程。

进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进程(由操作系统内部建立的进程)和用户进程(由用户程序建立的进程);一个进程中可以有一个或多个线程。进程和进程之间不共享内存,也就是说系统中的进程是在各自独立的内存空间中运行的。而一个进程中的线可以共享系统分派给这个进程的内存空间。

非阻塞的socket链接和异步io操作

这句话是在一些书中经常看到的,但是始终没能理解这是怎样一个应用场景,今天看到这样一个例子,貌似可以理解了,应用服务器监听客户端那边发来的请求,请求来了读取客户端传来的数据,在读完数据后,read方法处于阻塞状态,也就是说,这个线程将无法再监听客户端请求了。而要想在单线程中处理多个客户端请求,就必须使用非阻塞的Socket连接和异步I/O。但使用异步I/O方式比使用同步I/O更难以控制,也更容易出错。因此,使用多线程和同步I/O可以更容易地处理类似于多请求的异步事件。

创建线程有两种方式:继承Thread类或者实现Runnable接口

  api 上对http://docs.oracle.com/javase/6/docs/api/java/lang/Runnable.html的说明   

public interface Runnable

The Runnable interface should be implemented by any class whose instances are intended to be executed by a thread. The class must define a method of no arguments called run.

 

线程的四个状态:就绪,运行,挂起,停止

线程创建后不会立马去运行run方法中的代码,二十处于等待状态,这个时候可以通过Thread类设置线程的一些属性,比如优先级,当调用start方法后,线程开始执行run方法中的代码。代码进入运行状态。在线程运行状态中,可以通过方法使线程暂停,常用方法有suspend和sleep。用suspend挂起线程后,可以通过resume唤醒[这个不太建议用]。sleep线程休眠后,线程不会立马继续去执行,而是处于就绪状态等待系统的调度。总结一句这四个状态是可以流转的!其他常用的方法还有wait().

关键字volatile使用场景

慎用最近在看代码的时候,偶尔会看到这个关键字,这个是对基本数据类型的一个修饰符,如果这些简单数据类型声明为volatile,对它们的操作就会变成原子级别的。但这有一定的限制,只有当变量的值和自身上一个值无关时对该变量的操作才是原子级别的,如n = m + 1,这个就是原级别的。

 

详细文章可以看:http://developer.51cto.com/art/200911/162925.htm

posted @ 2012-06-26 23:26  _zao123  阅读(248)  评论(0编辑  收藏  举报