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

线程的创建方式

继承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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值