第13章 线程
线程具有提高执行速度的特点。
本章重点:
----------------------------------
线程的基本概念
创建并使用线程
线程的让步、同步等操作
进程就是一个执行中的程序,每一个进程都有其独立的内存空间和系统资源。
进程就是一个运行的程序,Windows操作系统是支持多进程的操作系统,即同一时间可以执行多个程序,每个程序是在自己独立的内存空间内,使用自己被分配到的系统资源。
线程是CPU调度和分派的基本单位,一个进程可以由多个线程组成,而这多个线程共享同一个存储空间,这使得线程间的通信比较容易。
在一个多进程的程序中,如果要切换到另一个进程,需要改变地址空间的位置。然而在多线程的程序中,就不会出现这种情况,因为它们位于同一个内存空间内,只需改变运行的顺序即可。
在Java程序语言中,可通过系统提供的编程接口去创建线程。
创建线程的方法有两种:
1、通过实现Runnable接口的方式来创建线程。
2、另一种是通过继承Thread类来创建线程。
在Java中,线程是一种对象,但不是所有的对象都可以称为线程,只有实现了Runnable接口的类,才可以称为线程。
在Java中,线程通常是通过调度模式来执行的。
所谓抢占式调试模式是指,许多线程处于可以运行状态,即等待状态,但实际只有一个线程在运行。
因为线程的抢占方式,所以程序每次运行的结果可能不一样。
public class threadTest{
public static void main(String[] args){
computeA a = new computeA();
computeB b = new computeB();
Thread t1 = new Thread(a);
Thread t2 = new Thread(b);
t1.start();
t2.start();
}
}
class computeA implements Runnable{
int i = 0;
public void run(){
for(int i = 0; i<10; i++){
System.out.println(i);
}
}
}
class computeB implements Runnable{
public void run(){
for(int i=0; i<10; i++){
System.out.println("这个数字是:" + i);
}
}
}
通过继承Thread类来创建线程:
public class threadTest{
public static void main(String[] args){
computeA a = new computeA();
computeB b = new computeB();
a.start();
b.start();
}
}
class computeA extends Thread{
int i = 0;
public void run(){
for(int i = 0; i<10; i++){
System.out.println(i);
}
}
}
class computeB extends Thread{
public void run(){
for(int i=0; i<10; i++){
System.out.println("这个数字是:" + i);
}
}
}