day19 java语言中的-----线程

一、线程(Thread)的概述:

    1、进程(process):是具有一定独立功能的程序,

       是系统资源进行资源分配合调度的一个独立单位,

       一个进程可以同时进行多个任务,一个进程可以有多个线程。

    2、线程(thread):可以定义为程序内的单序列控制流,

    每个线程都被分配了一个独立执行的独特任务,

   线程是CPU调度和分派的基本单位,

  同一个进程内的线程共享进程资源。

    3、线程周期: 新建  -->   可运行   -->   不可运行   -->终止 -->死亡:  彼此之间是可以不断的切换。

   (new)    (调用start)  (休眠sleep、终止)    (interrup方法、stop方法)   

     4、join方法:只有当当前线程执行完毕以后才去执行其他的方法

  

     5、同步化(synchronized):当多个线程同时执行的时候,如果存在数据的竞争,那么通过同步化协调多个线程

   即:使用synchronized关键字:表示同一个时刻,只有一个线程可以访问该方法。

   5.1:同步化方法:

   5.2:同步化代码块:


二、线程实例一

package www.com.c4;
public class Thread01 {

	public static void main(String[] args) {
		
		//当前执行的是主线程
		
		Thread thread = Thread.currentThread();
		System.out.println(thread);//输出当前主线程的相关信息
		
		System.out.println(thread.getName());//输出线程的名字
		System.out.println(thread.getPriority());//获取到当前线程的优先级别:是0-->10的一个级别
		System.out.println(thread.isAlive());//判断当前线程是否还存在,是否还生活着
		
		try {
			thread.sleep(2000);
			System.out.println("线程的休眠时间为2秒!");
		} catch (InterruptedException e) {
			System.out.println("线程被中断!");
		}
		//设置线程的名字
		thread.setName("thread001");	
	}
}

三、实例二:多线程

package www.com.c4;
//步骤:
//1、继承thread类,或者继承实现“runable”接口
//2、实现run方法
//3、在run方法里面编写对应的线程
//线程01
class ThreadA extends Thread {

	@Override
	public void run() {
		//在run方法类编写线程
		for (int i = 1; i < 10; i+=2) {
			try {
				Thread.sleep(2000);//休眠
			} catch (InterruptedException e) {
			}
			System.out.println(i);
		}
	}
}
//线程02
class ThreadB extends Thread{

	@Override
	public void run() {
		for (int j = 2; j < 10; j+=2) {
			try {
				Thread.sleep(1000);//休眠
			} catch (InterruptedException e) {
			}
			System.out.println(j);
		}
	}
	
}
//主线程
public class Thread02 {

	public static void main(String[] args) {
		
		System.out.println("线程启动!");
		
		//创建两个线程实例
		ThreadA A = new ThreadA();
		ThreadB B = new ThreadB();
		
		//启动线程
		A.start();
		B.start();
		
		//join方法
		try {
			A.join();//等待该线程执行完毕以后,在去执行其他的线程
			B.join();
		} catch (InterruptedException e) {
		}
		//设置优先级
		A.setPriority(1);
		B.setPriority(10);
		
		System.out.println("线程结束!");
	}
}


四、结束语

    线程的学习到这里就差不多了,但是你得理解他的核心思想。我这里不是很全面,你可以借助一些视频教程或数据系统的学习。