17. 多线程

1. 进程与线程:

进程和程序对应的。打开程序的时候就会开启至少一个进程。存的代码:: 资源内存

线程: cpu运行线程,线程访问进程上的资源。

2. 如何开启线程

第一种:

  1. 实现Runnable接口, 覆盖run方法。

  2. 实例化Thread类,通过构造放入runable.。

  3. 调用start()启动线程

第二种:

  1. 继承Thread类, 覆盖run方法。

开发用第一种: 单继承多实现

3. 线程方法

Thread.currentThread(): 获取当前线程对象

Thread.yield(); 从运行状态进入 等待运行状态

Thread.sleep(long ): 线程睡眠

t1.setPriority(int ): 优先级优先级,保证概率性的。高级先结束。

t1.setDaemon(boolean ): 设置守护线程, 创建者结束,线程就结束了

t2.join(); 把t2加入到当前线程中。t2先运行完之后再继续t1运行。

在这里插入图片描述

synchronized关键字: 同步锁

  • 场景: 多个线程访问同一数据的时候可能产生线程安全问题。 (数据:锁的是对象的属性。)
  • 同步锁会影响效率。
    • StringBuffer线程安全,慢, StringBuilder 线程不安全,快
  • 语法: 1. 修饰方法 2. 修饰代码块
	public synchronized void add() {
		count = count + 1;
		System.out.println(Thread.currentThread().toString() + count);
	}
	public void substract() {
		synchronized(this) {
			count = count - 1;
			System.out.println(Thread.currentThread().toString() + count);
		}
	}
  • Object wait() : 线程进入等待池。
  • Object notify(); 等待池随机一个线程回到 可运行状态
  • Object notifyAll(); 等待池所有线程回到 可运行状态

六态图:

在这里插入图片描述


行状态

六态图:

[外链图片转存中…(img-Ci7X6orE-1618116205381)]


posted @   剑心空明  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示