永发信息网

线程之间的关系

答案:1  悬赏:30  手机版
解决时间 2021-07-21 02:56
线程之间的关系
最佳答案
线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。

  线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

  线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU

  线程的周期

  新建 就绪 运行 阻塞 死亡

  线程调度与优先级

  有线程进入了就绪状态,需要有线程调度程序来决定何时执行,根据优先级来调度.

  线程组

  每个线程都是一个线程组的一个成员,线程组把多个线程集成一个对象,通过线程组可以同时对其中的多个线程进行操作.在生成线程时必须将线程放在指定的线程组,也可以放在缺省的线程组中,缺省的就是生成该线程的线程所在的线程组.一旦一个线程加入了某个线程组,不能被移出这个组.

  守护线程

  是特殊的线程,一般用于在后台为其他线程提供服务.

  isDaemon():判断一个线程是否为守护线程.

  set Daemon():设置一个线程为守护线程.

  Thread类和Runnable接口

  Thread类

  类Thread在包java.lang中定义,它的构造方法如下:

  public Thread();

  public Thread(Runnable target);

  public Thread(Runnable target,String name);

  public Thread(String name);

  public Thread(ThreadGroup group,Runnable target);

  public Thread(ThreadGroup group, String name);

  主要方法

  isActive() 判断是否处于执行状态

  Suspend() 暂停执行

  reSume 恢复执行

  start() 开始执行

  Stop() 停止执行

  sleep() 睡眠

  run() 程序体

  yield() 向其他线程退让运行权

  线程优先级

  Public statuc final int MAX_PRIORITY最高优先级,10

  Public statuc final int MIN_PRIORITY最低优先级,1

  Public statuc final int NORM_PRIORITY普通优先级,5

  Runnable接口

  Runnable接口中只定义了一个方法run()作为线程体,

  void run()

  Java的线程是通过java.lang.Thread类来实现的。

  VM启动时会有一个由主方法(public static void main(){})所定义的线程。

  可以通过创建Thread的实例来创建新的线程。

  每个线程都是通过某个特定的Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。

  通过调用Thread类的start()方法来启动一个线程

  Java里面实现多线程,有2个方法

  1 继承 Thread类,比如

  class MyThread extends Thread {

  public void run() {

  // 这里写上线程的内容

  }

  public static void main(String[] args) {

  // 使用这个方法启动一个线程

  new MyThread().start();

  }

  }

  2 实现 Runnable接口

  class MyThread implements Runnable{

  public void run() {

  // 这里写上线程的内容

  }

  public static void main(String[] args) {

  // 使用这个方法启动一个线程

  new Thread(new MyThread()).start();

  }

  }

  一般鼓励使用第二种方法,因为Java里面只允许单一继承,但允许实现多个接口。第二个方法更加灵活。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么非主流就这么受欢迎啊
长沙县长沙老百姓大药房(物流园分店)哪位知道
2009抚顺铝合金多钱一平
脸上经常有象头屑的东西,怎样除掉呀
求一道物理题的解,和全过程的讲解
another free,to take the stear,evrybody.的
海信电视42v68多少钱
条形码有什么用?一个条形码包含哪些信息?
北京未来七天天气如何
睢阳区李宁(商丘万达广场店)哪位知道具体地址
那里可以买到马
缘份何时真正到来
B细胞和T细胞产生的记忆细胞是一样的吗
我想让头发鬓角斜着贴住脸应该怎么弄?
一辈子只能爱一个人多久
推荐资讯
有什么办法可以与外国朋友交朋友
初中美文摘抄,初中300字美文摘抄
我的DNF号为什么一进去就是一直掉线
衡山县衡阳衡山县开云镇两路口社区服务站地址
故宫英语怎么拼写
钟祥市荆门新村超市这个地址怎么能查询到,着
五粮液五星级酒怎么样,五粮液好不好喝
4000千牛,四柱的液压机出现:锁不紧,压力出
赛尔号鉴定,,,,,,,
我想给孩子起个名字,女孩,今年八月份生人,
问个简单的问提DNF有些装备不是加技能1吗 如
索爱W595c怎么收不到网络信号,电话不能打,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?