学习线程时的一些简单理解

在了解线程时,先得对进程、线程、程序做一些简单的介绍:

进程:

进程是指运行中的应用程序,每个进程都有自己的独立地址空间(内存空间),在多任务系统中,每个独立执行的程序就称为进程,进程是程序的一次运行活动,是动态的概念

线程:

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源
【简单的讲:线程是进程的实体,一个进程可能有一个或多个线程,一个线程是一个程序中的一条执行线索】

程序:

程序一组有序的指令集合,是静态的概念

程序与进程

进程是执行程序的动态过程,而程序是进程运行的静态文本(如果我们把一部电影的拷贝比拟成一个程序,,那么电影的一次播放过程就可比为一个进程)

进程与线程
线程是进程的实体,一个进程可能有一个或多个线程,一个线程是一个程序中的一条执行线索

线程的实现有两种方式

  1. 继承Thread类
  2. 实现Runable接口

1.继承Thread类

 

public class MyThread extends Thread {

	@SuppressWarnings("static-access")
	public void run() {
		// 该程序可以每隔1秒在控制台输出“执行第×次”。当输出5次后,自动退出
		int i=0;
		while(i<=5) {
			Thread.currentThread().getName(); // 获取当前线程的名字
			System.out.println("执行第"+i+"次"+Thread.currentThread().getName());
			i++;
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
	}
}
public class Test_MyThread {

	public static void main(String[] args) {
		MyThread t1= new MyThread();
		t1.start();
		MyThread t2 = new MyThread();
		t2.start();
	}
}

2.实现Runable接口

public class MyRunAble  implements Runnable{

	public void run() {
		// 该程序可以每隔1秒在控制台输出“执行第×次”。当输出5次后,自动退出
		int i=0;
		while(i<=5) {
			Thread.currentThread().getName(); // 获取当前线程的名字
			System.out.println("执行第"+i+"次"+Thread.currentThread().getName());
			i++;
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
public class Test_Runable {

	public static void main(String[] args) {
	MyRunAble mr = new MyRunAble();
	Thread ta = new Thread(mr);
	ta.start();
	Thread ta1= new Thread(mr);
	ta1.start();

	}
}

继承Thread类与实现Runable接口的联系与区别

联系:
Runable接口和Thread类都要实现run方法,用star()启动线程

区别:
1.继承Thread类的线程对象拥有自己独立的资源,线程之间不能共享
2.实现Runable接口多个线程可以共享同一个资源,所以在需要多个线程共享同一个资源的时候,只能使用实现Runnable接口的形式

暂时先写这么多,以后有了更深的理解再来完善

猜你喜欢

转载自blog.csdn.net/qq_42960881/article/details/82986714