您的位置:首页 > 编程语言 > Java开发

[并发]Java并发编程入门-1

2010-01-21 10:05 459 查看
【为什么要使用并发?】
1. 提高程序运行速度
当在多核或者多处理器系统上运行时,并发程序能够充分利用多个执行单元以加快速度;但是,当在单处理器上运行并发程序时,则要分两种情况:当程序中存在阻塞时(比如遇到I/O阻塞),此时并发可以提高速度。如果是耗CPU的操作并且无阻塞,则在单处理器上运行并发程序不仅不会提高速度,反而会增加程序的运行时间,因为线程之间的切换增加了系统的开销。在多处理器上运行时,虽然也有线程切换的开销,但是并发本身带来的性能提升远远高于这个开销。
2. 简化设计
因为在现实中,有些操作本身就是并发进行的,因此,采用并发进行程序设计,可以模拟现实中的操作,简化程序设计。

并发在Java中最常见的例子是GUI的事件驱动编程,采用并发可以明显提高用户界面的可响应行。如果不采用并发,则程序中所有事件处理程序不得不循环检测用户输入,否则,在当前操作(有可能是非常耗时的操作)没有完成之前,用户的其他输入将得不到响应。而采用并发,利用单独线程执行响应用户的输入,则总可以保证每个事件能够得到一定程序的响应。其实这还是要依靠于操作系统的并发模型,如果采用类似Windows的时间片机制,可以保证每个线程在一定时间内都能得到执行,但是如果采用Solaris的FIFO并发模型,则相同优先级的任务将会是谁先来谁先执行完或者阻塞,然后后面的才能得到执行。

【在Java中如何使用线程】
两种方法:
1. 定义一个类,实现Runnable接口,即实现run()方法以定义要在此线程执行的操作,然后使用此类的对象为参数建立一个Thread对象t,调用t.start()方法,即可执行此线程中的run()方法中定义的操作。
2. 直接继承Thread类,重写run()方法。

1 public class SimpleThreadTest {
2 /**
3 * @param args
4 */
5 public static void main(String[] args) {
6 // TODO Auto-generated method stub
7 Thread t=new Thread(new Runnable(){
8 public void run(){
9 int i=0;
while(true){
System.out.println("in the thread1: "+i);
i++;
if(i==5){
break;
}
}
}
});
t.start();
for(int i=0;i<5;i++){
System.out.println("in the main thread: "+i);
}
}
}

运行结果:

1 in the main thread: 0
2 in the main thread: 1
3 in the main thread: 2
4 in the main thread: 3
5 in the main thread: 4
6 in the thread1: 0
7 in the thread1: 1
8 in the thread1: 2
9 in the thread1: 3
in the thread1: 4

示例代码中使用了匿名类,实际使用时,可以定义一个新类,实现Runnable接口或者直接继承Thread类,重写run()方法。

to be continued......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: