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

  • 相关阅读:
    团队项目-BUG挖掘
    评论任务
    4-14结对-复利计算
    做汉堡-结对
    复利计算--结对
    input上传按钮的优化
    avalon.js与 ajax使用的一个错误实例
    去除list集合中重复项的几种方法
    mvc学习记录
    常用js正则
  • 原文地址:https://www.cnblogs.com/javazyh/p/10847778.html
Copyright © 2011-2022 走看看