多线程:理解多线程之前需要了解的几个概念

进程:系统中可以同时运行多个任务(应用程序),每一个任务就称为一个进程,有独立的内存空间。
线程:在一个进程中,可以同时运行多个任务,每一个任务称之为一个线程,它们共享同一块内存空间。
并发:多个线程或进程都是并发操作的。
多个线程看似是同时运行的,实际上是走走停停的,系统会将CPU划分成若干个时间片段,并将每一块时间片段尽可能均匀的分配给每一个线程,获取时间片段的线程被CPU执行,其它线程等待的这种现象被称为并发。
计算机中没有绝对的同时运行。
创建线程的两种方法:(下面有实例)
1.继承Tread,重写run方法,run方法中定义的内容为线程中要执行的任务代码。
2.使得线程与其运行的任务代码分离开
定义线程体(线程要执行的任务代码)
实现Runnable接口

/**
 * 创建线程的第一种方式
 * @author Administrator
 *
 */
public class ThreadDemo {
	public static void main(String[] args) {
		Thread t1 = new Person1();	
		Thread t2 = new Person2();
		/*
		 * 注意!启动线程不要调用run方法
		 * 而是要调用start方法。
		 * start的方法是将线程纳入线程调度。
		 * start方法调用完毕后,线程会很快
		 * 执行起来,并自动调用run方法。
		 */
		t1.start();
		t2.start();
	}
}
/**
 * Thread类  线程类
 * 其每一个实例表示一个可以并发运行的线程
 * @author Administrator
 *
 */
class Person1 extends Thread{
	public void run(){
		for(int i=0;i<1000;i++){
			System.out.println("你是谁啊?");
		}
	}
}
class Person2 extends Thread{
	public void run(){
		for(int i=0;i<1000;i++){
			System.out.println("我是修水管的");
		}
	}
}


/**
 * 线程创建的第二种方式
 * @author Administrator
 *
 */
public class ThreadDemo2 {
	public static void main(String[] args) {
		/*
		 * 使用Runnable的作用是
		 * 线程与线程体 解耦
		 */
		Runnable r1 = new Person3();
		Runnable r2 = new Person4();
		
		Thread t1 = new Thread(r1);
		Thread t2 = new Thread(r2);
		
		t1.start();
		t2.start();
		
	}
}

class Person3 implements Runnable{
	public void run() {
		for(int i=0;i<1000;i++){
			System.out.println("你是谁啊?");
		}
	}
}
class Person4 implements Runnable{
	public void run() {
		for(int i=0;i<1000;i++){
			System.out.println("我是修电表的");
		}
	}
}