java线程与模式总结
需积分: 0 123 浏览量
更新于2012-07-09
收藏 108KB DOC 举报
### Java线程与模式总结
#### 一、Java线程简介
Java中的线程机制是其一大亮点之一,它直接支持线程级别的并发处理。线程相比于进程具有创建成本低、上下文切换快等优势,这使得Java在处理高并发场景时能够表现出色。然而,线程的使用对开发者提出了较高的要求,不当的使用可能会引发各种难以预料的问题。
#### 二、创建线程的方式
在Java中创建线程有两种主要方式:通过继承`Thread`类和实现`Runnable`接口。
##### 继承Thread类
创建线程最直观的方式是通过继承`Thread`类,并重写`run()`方法。当调用`start()`方法时,线程开始执行,`run()`方法中的代码会被执行。以下是一个简单的示例:
```java
public class SimpleThread extends Thread {
public SimpleThread() {
start(); // 启动线程
}
@Override
public void run() {
while (true) {
System.out.println(this); // 打印当前线程的信息
try {
sleep(100); // 让线程暂停100毫秒
} catch (InterruptedException e) {
e.printStackTrace(); // 异常处理
}
}
}
}
```
##### 实现Runnable接口
另一种创建线程的方式是实现`Runnable`接口。这种方式不需要继承`Thread`类,而是通过创建一个新的`Thread`对象并传入实现了`Runnable`接口的对象来启动线程。示例如下:
```java
public class Inner implements Runnable {
private Thread thread;
public Inner(String name) {
thread = new Thread(this, name); // 创建一个新的线程
thread.start(); // 启动线程
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(10); // 让线程暂停10毫秒
} catch (InterruptedException e) {
throw new RuntimeException(e); // 抛出异常
}
}
}
}
```
#### 三、常用线程API介绍
Java提供了丰富的线程API,以下是其中一些常用的API及其作用:
- **`start()`**:启动线程,调用线程的`run()`方法。
- **`sleep(long millis)`**:使当前线程休眠指定的毫秒数。如果线程被中断,将抛出`InterruptedException`。
- **`run()`**:线程的主体方法,包含具体的业务逻辑。
- **`join()`**:等待另一个线程终止。调用此方法的线程将等待直到另一个线程完成或被中断。
- **`yield()`**:建议当前线程放弃CPU时间片,让出给同等优先级的其他线程运行。注意,这个方法并不保证线程一定会立即放弃CPU控制。
- **`wait()`**:使当前线程等待,直到被唤醒或达到指定的等待时间。该方法释放了当前线程持有的锁,并将线程置于等待状态。
#### 四、深入理解线程API
##### `yield()`方法详解
虽然`yield()`方法通常用于提示调度器考虑重新安排线程执行,但其实际效果取决于具体的平台。在某些平台上(比如Windows),它的效果可能不如预期,因为它依赖于操作系统的调度策略。
##### `wait()`方法详解
`wait()`方法是`Object`类的一个成员方法,用于同步线程。当一个线程调用对象的`wait()`方法时,它将释放该对象的监视器锁(也就是synchronized锁),并将线程放入该对象的等待池中,直到收到`notify()`或`notifyAll()`通知或达到指定的等待时间。`wait()`方法通常配合`synchronized`关键字使用,以确保正确的线程同步。
#### 五、总结
Java线程是进行并发编程的基础,掌握线程的基本概念和常用API对于编写高效可靠的Java程序至关重要。通过本文的学习,希望能够帮助读者建立起对Java线程的基本认识,并为后续更深入的学习打下坚实的基础。
vincent239
- 粉丝: 0
- 资源: 20
最新资源
- 共创在线考试系统(JSP+SERVLET)130223.rar
- 俄罗斯方块(java+applet)130228.rar
- 会员管理系统(struts+hibernate+spring)130226.rar
- 会员管理系统(struts+hibernate+spring).rar
- 基于J2EE在分布式环境下的底层结构(外文翻译+文献综述).rar
- 基于JSP的畅想空间电子商务系统.rar
- 基于JSP的网上购物系统的设计与实现(源代码+论文).rar
- 基于JSP的房产中介系统的设计与实现(源代码+论文).rar
- 基于JSP电子商务系统?(论文).rar
- 基于jsp的新闻发布系统(论文).rar
- 基于matlab的数字图像分割技术研究及实现(论文).rar
- 基于jsp网上书店(源代码+论文).rar
- 计算器(java+applet)130228.rar
- 家庭理财系统(java+applet)130227.rar
- 教材订购系统(jsp+servlet+mysql).rar
- 教材订购系统(jsp+servlet+mysql)130226.rar