zoukankan      html  css  js  c++  java
  • 线程之实现

    进程其实就是一个应用程序,列如迅雷就是一个进程,多个下载任务就是多个线程。一个进程包含多个线程。

    在系统中要执行某个进程主要看能不能获取到cpu的资源,也就是cpu的时间片,这个是无法控制的,cpu给每个进程一定的执行时间,时间到就到下一个进程。

    线程的生命周期:

     

    java中实现线程的方式有两种:

    1.继承Thread类。

    继承Thread类后需要重写run方法,然后再run方法中写需要执行的代码。可以通过Thread实现类也就是ThreadTest类的有参构造方法来给线程命名,或者通过getName获取线程名字。

    实际上java程序在运行时会启动两个线程,一个是主线程,一个是垃圾回收线程,可以使用setName方法设置线程的名字,调用start方法即可开启一个线程。

    也可以调用Thread.currentThread方法设置当前线程的名字,也就是主线程的名字。

    2.实现runnable接口。

    实现runnable接口也要重写run方法,同样的可以调用Thread.currentThread.getName获取当前线程的名字。

    继续Thread类和实现Runnable接口的区别:

    1.因为java中是单继承,所以继承Thread类就无法再继承其他类。

    2.虽然都是run方法,但是两个run方法是不同的,继承Thread类的run方法是写在继承Thread类的子类中,实现接口的run方法是写在Runnable接口的实现类的run方法中。

    3.实现Runnable接口的方式适合多个线程去处理同一个资源,

     

    继承类如果要开启多线程需要实例化类两次,就会引起资源的不统一,比如卖票就会出现一个线程卖100,总共就会卖出200张票,但是也可以通过加static关键字解决。实现接口就不会出现这种情况,因为只用实例化一次类。

    3.线程优先级问题:

    线程优先级默认是5,有1,5,10,但是只是概率并不是一定的。

  • 相关阅读:
    codevs 1432 总数统计
    codevs3500 快速幂入门题解
    #163. 【清华集训2015】新式计算机
    2989:糖果
    191:钉子和小球
    java 删除所有HTML工具类
    DateTools时间插件
    新的开始
    springBoot---端口,路径数据配置
    springBoot---多个配置文件读取
  • 原文地址:https://www.cnblogs.com/javazyh/p/10847778.html
Copyright © 2011-2022 走看看