文档介绍:Java2 网络编程基础
多线程
第十章
10
回顾
Java 基本类是作为 AWT 的扩展而开发的
Swing 是 JFC 下的一组类,提供轻量级可视化组件,可用于创建美观的 GUI
Swing 容器有两类:顶级容器、中间容器
Swing标签既可以显示文本也可以显示图像
Swing文本组件
Swing中用于选择性输入的常用组件
菜单是GUI中非常有用的一部分
目标
了解多线程的概念
掌握如何创建线程
了解死锁的概念
掌握线程同步
掌握使用 wait() 和 notify() 在线程之间进行通信
多任务处理
进程是指一种“自包容”的运行程序,有自己的地址空间;线程是进程内部单一的一个顺序控制流
基于进程的特点是允许计算机同时运行两个或更多的程序。
基于线程的多任务处理环境中,线程是最小的处理单位。
多任务处理有两种类型:
- 基于进程
- 基于线程
基于线程的多任务处理的优点
基于线程所需的开销更少
在多任务中,各个进程需要分配它们自己独立的地址空间
多个线程可共享相同的地址空间并且共同分享同一个进程
进程间调用涉及的开销比线程间通信多
线程间的切换成本比进程间切换成本低
多线程
多线程
在Java中,一个应用程序可以包含多个线程。每个线程执行特定的任务,并可与其他线程并发执行
多线程使系统的空转时间最少,提高CPU利用率
多线程编程环境用方便的模型隐藏CPU在任务间切换的事实
主线程
在Java程序启动时,一个线程立刻运行,该线程通常称为程序的主线程。
主线程的重要性体现在两个方面:
它是产生其他子线程的线程。
通常它必须最后完成执行,因为它执行各种关闭动作。
主线程示例
class Mythread extends Thread {
public static void main(String args[]) {
Thread t= ();
("当前线程是: "+t);
("MyJavaThread");
("当前线程名是: "+t);
try {
for(int i=0;i<3;i++) {
(i); (1500);
}
}
catch(InterruptedException e) {
("主线程被中断"); }
}
}
获得当前线程,即主线程
改变线程的内部名称
输出每个数后暂停1500毫秒
创建线程 2-1
通过以下两种方法创建 Thread 对象:
声明一个 Thread 类的子类,并覆盖 run() 方法。
class mythread extends Thread {
public void run( ) {/* 覆盖该方法*/ }
}
声明一个实现 Runnable 接口的类,并实现 run() 方法。
class mythread implements Runnable{
public void run( ) {/* 实现该方法*/ }
}
创建线程 2-2
要触发一个新线程,使用 start() 方法,如:
Mythread t = new Mythread();
();
在调用 start() 方法时,将创建一个新的控制线程,接着它将调用 run() 方法。
run() 方法中的代码定义执行线程所需的功能。