外炼互斥,内修可见,内功有序

  1. 创建线程的方式
    1. 一个继承了Thread的类,new Thread()的时候传入
      1. Thread a=new Thread(myThread,"A");
    2. 继承Thread类,直接创建这个例的实例
      1. Mythread a=new Mythread(“name”);
    3. 实现runnable接口重写run,再创建Thread的实例,将实现runnable接口的类传入
      1. Thread a=new Thread(new A)
    4. 实现callable接口,重写call方法,创建一个带返回值的线程
  2. 线程是由主线程创建的
  3. 调用run方法意味着立即执行run()方法,不启动新的线程

而调用start方法意味着执行run()方法时机不确定,启动新的线程

  1. IsAlive()方法判断当前线程是否处于活动状态,对活动状态的定义:线程已经启动且尚未终止的状态即为活动状态。并且如果线程处于正在运行或准备开始运行的状态,也认为线程是存活的
    1. 用this调用isalive方法和用Thread.currentThread.isalive是有区别的
  2. 如果调用sleep方法所在的类是Thread,则执行this和thread调用是一致的,如果不是,则有区别
  3. 线程分为两类,一类是守护线程(后台线程),一类是用户线程(前台线程),当Java虚拟机启动的时候,通常有一个用户线程,一般是main方法的
  4. 线程创建的时候有个设置优先级,用的是线程对象.setPriority(int),一般都是默认,默认优先级为5,所创建的线程一般都是用户线程,如果想要变成守护线程,需要调用SetDaemon(true)设置为守护线程
  5. 守护线程都是为用户线程服务的,通过逻辑代码,例如gc回收器
  6. 单线程和多线程的区别???
    1. 单任务的特点是排队执行,即同步,必须等待这条命令执行完才可以下一个命令,在同一时间只能执行一个任务,CPU利用率大幅度低
    2. 多线程的优点就是多任务,可以在同一个时间可以执行多个任务,使用多线程也就是在使用异步,因为异步,所以线程被调用的时机是随机
  7. 为什么需要多线程???
    1. 系统中出现了阻塞
    2. 不依赖,比如业务分为AB,当A发生阻塞,B不依赖A执行的结果,则可以不使用多线程
  8. 多线程创建虽然是多种方式,但是Thread类是实现了Runable接口,他们之间具有多态关系,使用Thread最大的局限是不支持多继承,所以可以一边实现接口,一边继承。

用Thread继承和用runnable接口实现功能一样,没有本质区别

  1. Start()方法耗时的原因
    1. 通过jvm告诉操作系统创建Thread
    2. 操作系统开辟内存并使用Windows SDK中的createThread()函数创建Thread线程对象
    3. 操作系统对Thread对象进行调度,以确定执行时机
    4. Thread在操作系统中被成功执行
  2. 多次调用会出现Illegal-ThreadStataException异常
  3. 执行start的顺序不代表执行run的顺序
  4. 自定义线程类中的实例变量针对其他线程可以有共享和不共享之分
    1. 不共享
    2. 共享

  1. 在main方法里面调用sleep是使主方法休眠,在run方法里面调用sleep是让对应方法休眠
  2. 方法内声明的变量一定是安全的,非线程安全性问题一般出现在实例变量中
  3. Isalive()判断线程是否存活
  4. Sychronized可以放在修饰符或者返回值前面
  5. 牢记共享,只有共享资源的读写访问才需要加锁
  6. 锁重入也支持父子类继承的环境,所以可以锁父类的方法就OK

  1. 出现异常,锁会自动释放,但是suspend和sleep方法调用不释放锁
  2. 重写方法如果不使用synchronized,即是非同步方法,异步不存在争抢,根本没必要上锁
  3. 用锁必须为同一个,println也是上锁的,多个锁就是异步
  4. 在静态static方法上使用synchronized关键字声明同步方法时,使用当前静态方法所在类对应的class类的单例对象作为锁
  5. 虽然将sychronized关键字加到非static方法上的效果是一样的——同步,但是两个还是有本质区别,加到静态方法上时将class类对象作为锁,而加到非静态方法上的方式是将方法所在类的对象作为锁
  6. 同一个内部类中不同方法使用的是不同的锁,所以也是异步的
  7. 外炼互斥,内修可见,内功有序
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值