06 线程、同步

06 线程、同步

主要内容

  • 线程
  • 同步
  • 线程状态

第一章 线程

1.1创建线程方式:

  1. 自定义类继承Thread类
  2. 自定义类实现Runnable接口

1.2Thread和Runnable的区别

如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易实现资源共享。

实现Runnable接口比继承Thread类所具有的优势:

*1.适合多个相同的程序代码的线程去共享同一个资源。

2.可以避免java中的单继承的局限性。

3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。

4.线程池只能放入实现Runnable或Callable类线程,不能直接放入继承Thread的类。

ps:在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用 java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM其实在就是在操作系统中启动了一个进 程

1.3匿名内部类的方式创建线程

new Thread(new Runnable(){
	public void run(){
		//重写方法体
	}
}).start();

第二章 线程安全

2.1 线程安全

我们通过电影院卖票案例,演示线程的安全问题:

发现程序出现了两个问题:

1.相同的票数,比如5这张票被卖了两回。

2.不存在的票,比如0票与-1票,是不存在的

2.2 线程同步

  1. 同步代码块。
  2. 同步方法。
  3. 锁机制。

第三章 线程状态

3.1 线程状态概述

java.lang.Thread.State 这个枚举中给出了六种线程状态:

  • Enum Constant and Description
    BLOCKED 一个线程的线程状态阻塞等待监视器锁定。
    NEW 线程尚未启动的线程状态。
    RUNNABLE 可运行线程的线程状态。
    TERMINATED 终止线程的线程状态。
    TIMED_WAITING 具有指定等待时间的等待线程的线程状态。
    WAITING 等待线程的线程状态

ps:TIMED_WAITING中的wait方法是带参的。这种设计方案是很巧妙的,如果线程没有得到唤醒通知,那么就处于TIMED_WAITING状态,直到倒计时完毕自动醒来;如果在倒计时期间得到唤醒通知,那么线程从TIMED_WAITING立刻被唤醒。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值