如何使用Java编写多线程程序
线程呢可以看作单独地占有CPU时间来执行相应的代码的。当然一个程序可以是多线程的,多线程的各个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。
1、什么是线程
线程呢可以看作单独地占有CPU时间来执行相应的代码的。当然一个程序可以是多线程的,多线程的各个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。在多处理机计算机上实现多线程时,它们确实可以并行工作,而且采用适当的分时策略可以大大提高程序运行的效率。
2、为什么要使用多线程
顺序执行程序和采用多线程并行执行程序相比,效率是可以大大地提高。
3、java中是如何实现多线程
在java语言中的线程系统是java语言自建的, 因为java中有专门的支持多线程的API库,所以很容易写一个支持线程的程序。在使用java创建线程的时候,可以生成一个Thread类或者他的子类对象,并给这个对象发送start()消息(程序可以向任何一个派生自 Runnable 接口的类对象发送 start() 消息的),这样一来程序会一直执行,直到run返回为止,此时该线程就停止了。
在这里我们用多线程中最典型的例子,生产者与消费者问题。在这个例子里面我们定义了生产者Producer,消费者Consumer和仓库Warehouse三个类,在整个程序的生命周期里,生产者随机地制造出产品放到仓库中,消费者也是随即地从仓库中取出产品。
| import exception.ProducerConsumerException;
/** * Consumer.java * Consumer * By: Jiabo * Date: Mar 21, 2004 * Time: 2:47:58 PM */ public class Consumer extends Thread { private Warehouse warehouse; private String id; public Consumer(Warehouse warehouse, String id) { this.warehouse = warehouse; this.id = id; } public void run() { int tmp = (int) Math.random() * 10; try { warehouse.get(tmp); System.out.println("Consumer # " + this.id + " get " + tmp); } catch (ProducerConsumerException e) { e.printStackTrace(); } try { sleep((int) (Math.random() * 100)); } catch (InterruptedException e) { e.printStackTrace(); } } } |
- 本文关键词:

