线程的创建和状态(操作系统和java)

本文详细介绍了Java中线程的创建方式,包括继承Thread类、实现Runnable接口以及使用匿名内部类。同时,讲解了线程的六种状态转换,包括新建、可运行、运行、阻塞、等待和计时等待状态。此外,还阐述了线程调度的原理,如sleep()、join()和yield()方法的作用。最后,讨论了线程同步的重要性,提到了synchronized关键字以及单例设计模式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程的创建方式

继承Thread
	class MyThread extends Thread {
		@Override
		public void run() {
		}
	}
	MyThread t = new MyThread();
	t.start()

	实现Runnable接口 推荐
	class MyRunnable implements Runnable {
		@Override
		public void run() {
		}
	}

	MyRunnable my = new MyRunnable();
	Thread t = new Thread(my);
	t.start()

	匿名内部类方式操作
	new Thread(new Runnable() {
		@Override
		public void run() {
		}
	});

线程的状态

操作系统层面 5种状态
新建 就绪 运行 终止 阻塞

Java里面 6种状态
新建状态: new 创建线程对象
可运行状态:start()方法,进入可运行状态,线程可能开始运行,也可能没有运行
刚start() ,线程相当于先进入就绪状态,获取cpu资源,进入运行状态
cpu时间片到期,yield() 线程回到就绪状态
阻塞状态:通过同步方法、同步代码块对象程序加锁,其他线程访问已加锁的代码时,进入阻塞状态
当线程释放锁,阻塞的线程进入可运行状态,哪个线程抢到cpu资源,该线程执行相关程序,并继续加锁
等待状态:线程中调用wait()/join()等方法,线程进入等待状态
其他线程通过notify()唤醒等待的线程,或者join的线程执行完毕,线程线程进入可运行状态
计时等待状态:sleep(long)/wait(long)/join(long) 进入计时等待状态
终止状态:run方法正常执行完毕,或者报异常


线程的调度


sleep() 哪个线程调用sleep方法,哪个线程就休眠
join() 线程插队 ,插队的线程先执行完,其他的线程才会继续执行
yield()线程礼让 哪个线程中调用yield方法,哪个线程进入就绪状态

线程同步
针对线程安全:多个线程访问共享的数据
同步机制
同步方法 synchronized 修饰方法
同步代码块
synchronized(锁对象) {
需要同步执行的代码
}
锁对象必须唯一,相当于多个线程共享一把锁

单例设计模式
整个程序中,如果某个类的对象只需要一个,这个时候就可以使用单例模式
懒汉式
饿汉式 推荐

注意:构造方法需要设置为private
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值