A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-6-27 20:52  /  2916 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

郑雪平

今天专门学习了线程方面的内容,主要是学习了多线程。多线程的创建方法有两种,第一种是继承Thread类方法();另一种是实现Runnable接口方法。两者都是创建多线程的方法,但是却有着一定的区别。继承Thread类这方法它受到继承只能单一继承的制约,每次调用对象都要生成一个RUN方法,对象和方法捆绑在一起,所以它有很大的局限性,不适合资源共享;实现Runnable接口方法就不一样,它没有继承的局限性制约,可增强程序的健壮性可被多个线程共享,代码和线程是独立的,run方法和对象是分开的可扩展性好等优点。
  多线程在运行时容易发生安全性问题,解决安全性问题的方法有三种:1.同步代码块;2.同步方法;3:lock锁。一.同步代码块使用synchronized 关键字,格式为:synchronized (同步锁){  同步执行的代码块  }
        二.同步方法:使用synchronized修饰的方法,就叫做同步方法,保证第一个线程执行该方法的时候,其他的线程只能在方法外等待,格式:public synchronized void method(){ 可能会产生线程安全问题的代码 };三.Lock锁也称同步锁,同步代码块和同步方法具有的功能Lock锁都有,所以它有更广泛的锁定操作也更强大。同步锁: 1. 锁对象可以是任意类型。 2. 多个线程对象只要使用同一把锁。需要明白的是在任何时候,最多允许一个线程拥有同步锁,谁拿到锁就进入代码块,其他的线程只能在外等着 。
  线程状态:线程在被创建出来到结束的生命周期中,总共有六种状态:1.NEW(新建状态)  ;2.Runnable(可运行状态);3.Blocked(锁阻塞状态);4.Waiting(无限等待状态);5.Timed Waiting(计时 等待状态);6、Teminated(被终止状态)。






回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马