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,但是只是概率并不是一定的。

  • 相关阅读:
    Java学习二十九天
    Java学习二十八天
    47. Permutations II 全排列可重复版本
    46. Permutations 全排列,无重复
    subset ii 子集 有重复元素
    339. Nested List Weight Sum 339.嵌套列表权重总和
    251. Flatten 2D Vector 平铺二维矩阵
    217. Contains Duplicate数组重复元素
    209. Minimum Size Subarray Sum 结果大于等于目标的最小长度数组
    438. Find All Anagrams in a String 查找字符串中的所有Anagrams
  • 原文地址:https://www.cnblogs.com/javazyh/p/10847778.html
Copyright © 2011-2022 走看看