【黑马程序员】 java中的多线程。

                                 ------- android培训java培训、期待与您交流! ------……

 java中要实现多线程有两种方法,第一种,直接继承Thread类,第二种,实现Runnable接口。

一:继承Thread类:

 Thread的子类中必须明确的覆盖Thread类中的 run() 方法,

 class Text extends {

     public void run (){

          线程体

    }

}

二: 实现runnable 接口

      1.定义类实现runnable接口

       2.覆盖runnable接口中的run()方法

       3.实例化Thread类的对象

       4.将runnable子类的对象以参数传给Thread类的构造方法

        5.启动线程

注意:实现接口的方式避免了java单继承的局限性,一般多用实现runnable接口的方式。

启动线程必须调用start() 方法 而不是直接调用run()方法。一个线程只能调用一次start()方法,多次调用将会抛出异常。

 

三:主线程和分线程的状态:

主线程的中止不会影响其他的正在运行中的线程,主线程中止也就是main()方法退出了。只有进程中的所有线程都中止时,进程(JVM进程)才会退出,只要有线程没有中止,进程就不会退出。

线程的生命周期:

                  1,初始状态:此时线程只是处于JVM进程中,只是创建了一个线程对象,并没有真正开始运行。

                  2,可动行状态:调用线程对象的start()方法,此时线程才真正的被创建,进入可运行状态,等待CPU的调度。“万事俱备,只欠CPU”。

                  3,运行状态:正在运行的线程,此时它拥有CPU的执行权。

                  4,阻塞状态:运行状态中的线程,如果正在等待用户输入或调用了sleep()join()等方法都会导致线程进入阻塞状态,注意从阻塞状态出来的线程不一定马上回到运行状态,而是重新回到可运行状态,等待CPU的再次调度。

                  5,等待队列状态:一个线程调用一个对象的wait()会自动放弃该对象的锁标记,进入等待队列状态,只有当有另外一线程调用临界资源的notify()notifyAll()方法,建议多使用notifyAll(),才会将等待队列中的线程释放,此线程进入锁池状态。

                  6,锁池状态:每个对象都有互斥锁标记,以防止对临界资源的访问造成数据的不一致,和数据的不完整性。一个线程拥有一个对象的锁标记后,另一线程想访问该对象,必须在锁池中等待。由系统决定哪个线程拿到锁标记并运行。注意从锁池状态出来的线程不是马上回到运行状态,而是重新回到可运行状态,等待CPU的再次调度。

                  7,终止状态:一个线程运行结束后称为终止状态,一个进程中只有所有的线程退出后才会终止。

 

四:线程常用的一些方法:

1.Thread(runnable target)   接收runnable的子类对象,实例化Thread类对象。

2. Thread(runnable target, string name)   同上 并且给定线程名字

3.currentThread()返回正在执行的线程

4.getName() 返回线程的名字

5.getPriority() 返回线程的优先级

6. boolean isInterrupted() 判断线程是否被中断

7. isAlive() 是否在活动

8.join() 强制运行等待线程死亡

9.setName() 设置名字

10. setPriority() 设置优先级

11.sleep(long mili) 线程休眠多少 毫秒

12.yield() 停止当前线程,让其他线程执行

13.wait() 等待

 

五:同步和死锁

1.同步代码块

           synchronized(同步对象){

                     需要同步的代码块

            }

2.同步方法

 synchronized 方法返回值 方法名(参数){

     代码

}

过多使用synchronized时 容易造成死锁,应特别注意

 

六:其他的一些方法

 1.等待与唤醒

   wait() 线程等待 需要唤醒才可进入准备状态

   notify() 唤醒等待中的线程

  notifyAll() 唤醒所有

2.线程的生命周期

suspend()暂时挂起线程

resume()恢复挂起的线程

stop() 停止线程

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值