java 关于多线程的总结

进程与线程

概念

  • 进程是程序的执行过程(动态性),持有资源(共享内存、共享文件)和线程(是资源和线程的载体)
  • 线程是系统中最小的执行单元

线程间交互

  1. 互斥 资源有限,需抢占
  2. 同步 协作完成一项任务,有先后顺序

java线程初探

java对线程的支持

Thread类和Runnable接口,以及共同的run()方法。
java对线程的支持

Thread类

join()使当前运行线程等待调用线程的终止,再继续运行
yield()使当前运行线程释放处理器资源
停止线程的错误方法 1.stop() 2.interrupt()
使用退出标志(volatile bool keepRunning)停止线程循环
在这里插入图片描述

Thread和Runnable示例

Thread和Runnable各自每运行10次暂停1s,交替运行。一个.java文件可有多个类(不包括内部类),但只能有一个public类。

public class Actor extends Thread {
	public void run(){
		System.out.println(getName()+"是一个演员!");
		int count = 0;
		boolean keepRunning = true;
	
		while(keepRunning){
			System.out.println(getName()+"登台演出:"+ (++count));
			if(count == 100){
				keepRunning = false;
			}	
			if(count%10== 0){
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
		System.out.println(getName()+"的演出结束了!");
	}
	public static void main(String[] args){
		Thread actor = new Actor();
		actor.setName("Mr. Thread");
		actor.start();
		Thread actressThread = new Thread(new Actress(),"Ms. Runnable");
		actressThread.start();
	}
}
class Actress implements Runnable{
	@Override
	public void run() {
		System.out.println(Thread.currentThread().getName()+"是一个演员!");
		int count = 0;
		boolean keepRunning = true;
		while(keepRunning){
System.out.println(Thread.currentThread().getName()+"登台演出:"+ (++count));	
			if(count == 100){
				keepRunning = false;
			}
			if(count%10== 0){
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
System.out.println(Thread.currentThread().getName()+"的演出结束了!");
	}
}

总结一下:
在这里插入图片描述
在这里插入图片描述

线程的生命周期

在这里插入图片描述
阻塞事件:如sleep(),wait(),join()方法被调用

java守护线程

java线程分两类:
1.用户线程
2.守护线程 一旦所有用户线程都结束了,守护线程也就结束了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jstack生成线程快照

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值