Java多线程学习(一)

线程概述:

Java提供了非常优秀的多线程的支持,程序可以通过非常简单的方式启动多线程,多线程包括创建,启动线程,控制线程,以及多线程的同步(多线程安全)

线程和进程的区别:

几乎所有的操作系统都支持进程的概念,所有运行的任务通常对应一个进程,当程序进入到内存中,即变成一个进程。进程是处于运行中的程序,并具有一定的独立性。进程是包含线程的,也就是说一个进程可以包含多个线程。进程具有如下的特性:
1.独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都有自己的私有空间,没有经过进程本身的允许其他进程是不可以访问当前进程的地址的。
2.动态性:进程和线程的最大区别:进程是一个正在系统中活动的指令的集合。在进程中加入了时间的概念。
3.并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会相互影响。

多线程:
线程是程序中独立的,并发的执行流。线程是进程的划分的最小单位。线程中可以共享内存,文件语句,每个进程都有对应的状态。

多线程的简单实现:

多线程有两种创建方式:
1.继承Thread类
2.实现Runnable接口

public class ThreadTest extends Thread{
	@Override
	public void run() {
		while(true) {
			System.out.println("我是线程一。。。。");
		}	
	}
	
}
public class ThreadTest2 implements Runnable{
	@Override
	public void run() {
		while(true) {
			System.out.println("我是线程二。。。。");
		}
		
	}
}
public class Go {
	public static void main(String[] args) {
		ThreadTest t1=new ThreadTest();
		ThreadTest2 t2=new ThreadTest2();
		//让线程运行
		t1.start();
		//如果使用实现接口的方式来实现线程,需要再次包装
		Thread t3=new Thread(t2);
		t3.start();
		//在当前程序中再创建一个线程
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				while(true) {
					System.out.println("我是主线程3。。。。。");
				}
			}
		}).start();
	}
}

代码解析:如上代码所示一个程序中包含三个线程,这三个线程拥有同样等级的执行权,具有竞争关系,他们会竞争CPU的执行权,谁抢到CPU的执行权,谁去执行。

两种创建线程方式优缺点对比:

采用实现Runnable接口的方法:
1.线程只是实现了Runnable接口,还可以继承其他的类
2.在这种方式下可以多个线程共享一个target对象,适合多个相同的线程处理同一份资源,从而将我们的CPU,代码和数据进行分开,形成这么一个清晰的模型的关系,较好的体现了面向对象的思想。
3.编程稍微复杂一些,如果需要访问当前线程,必须要使用Thread.currentThread()这个方法。

采用继承Thread类的方法:
1.因为继承了Thread类,无法再继承其他的类。
2.编程程序相对于简单,如果想访问当前线程,可以直接使用this获取当前线程。

你可能感兴趣的:(JAVA笔记,Java,多线程)