JAVA学习笔记四:线程(创建)

线程概念:

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪阻塞运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

 

线程特点:

1、具有并发性

2、是系统调度和分配的基本单位

3、一个进程可包含多个线程

4、线程具有就绪,阻塞和运行三个状态

(百度百科上的图片:描述线程的状态)

 

线程的创建:

1、通过继承Thread类

(1)extends Thread,创建线程class

(2)通过复写run()方法实现并发时的操作

(3)通过调用类的start()方法,该方法是Thread类中的方法

(4)start()方法将线程设置为就绪状态,若此时CPU空闲,自动调用run()方法

2、通过实现Runnable接口

(1)interface Runnable,并没有创建线程class,没有实现start()方法

(2)复写run()方法实现操作

(3)实例化对象(实例我们自己编写的类)

(4)实例一个Thread类,并将我们写的实例传入其中

(5)通过调用实例(该实例由Thread类生成)的start()方法将实例(由我们编写的类生成)转化成为就绪状态

3、通过匿名类实现

(1)在创建Thread时直接复写run()

(2)格式为new Thread(){ public void run() {...要实现的操作...} }.start();

4、通过Lambda表达式(java8以上)

(1)格式为 new Thread( ()-> {...要实现的操作...} ).start();

 

具体前三种代码:

package xc;

public class Mytheaed {
	public static void main(String[] args) {
		//通过继承Thread类
		num num=new num();
		num.start();         //将进程转换成就绪状态,若CPU空闲,则执行run()方法
		
		//通过实现Runnable接口
		word myword= new word();    //将类实例化
		Thread mythread = new Thread(myword);  //将实例传入线程实例thread
		mythread.start(); 
		
		//通过匿名类创建线程
		new Thread() {
			public void run() {
				for(int i=1;i<=10;i++) {					//打印10个大写字母
					System.out.print(" "+(char)(i+64));
					try{ Thread.sleep(10); } catch(InterruptedException e) {}   //让线程沉睡10毫秒
				}
			}
		}.start();
	}
}

class num extends Thread{         //使用继承的方式
	public void run(){
		for(int i=1;i<11;i++) {
			System.out.print(" "+i);         //打印10以内的数字
			try{ Thread.sleep(10); } catch(InterruptedException e) {}   //让线程沉睡10毫秒
		}
	}
}

class word implements Runnable{      //实现接口的方式
	public void run() {
		for (int i=1;i<=10;i++)
		{
			System.out.print(" "+(char)(96+i));     //打印10个小写字母
			try{ Thread.sleep(10); } catch(InterruptedException e) {}    //让该线程沉睡10毫秒
		}
	}
}

 

分析结果:

1、代码结果截图

2、分析

线程的创建基本上我觉得就前面两种会比较常用一些,当然,后面两种可能在实现过程中空间消耗较小吧,具体的学习还未展开,现在只学习到了线程如何创建,用法的话,可以根据以往关于操作系统的知识有所了解吧。具体过程的话,应该还会有线程的信号量机制,这些内容就涉及到计算机内部了,可以下来多多学习其他内容, 首先掌握以下简单的编程实现。本博客前篇转自百度百科,本人认为还是对线程有了简单的解释。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值