Core Java--线程Thread专题

 

本章主要介绍在Java中如何实现多线程。

类名 备注
 java.lang.Thread 线程类,使用它可以使一个类线程化。
java.lang.Runnable 实现多线程机制的另一种办法

目录

1、线程概述

2、Thread类

3、实现Runnable接口

4. 线程阻塞

5. 线程的优先级

6. 线程同步和死锁。


1、线程概述

在了解线程Thread之前,我们先来了解一下几个概念。
程序program:一段静态代码,它是应用软件执行的蓝本。
进行process:程序的一次动态执行过程,它对应了从代码加载,执行到执行完毕的一个完整过程。这个过程本身也是进程从产生,发展到消亡的过程。
线程Thread:比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。

线程只见可以共享相同的内存单元,包括数据和代码,并利用这些共享单元来实现数据交换、实时通信和必要的同步操作。

每个Java程序都有一个缺省的主线程,想要实现多线程,必须在主线程中创建新的线程对象。

线程在一个完整的生命周期通常要经历五种状态。

新建new:当一个Thread类或其子类的对象被声明并创建时,新生的Thread对象就处于new状态,此事它已经有了相应的内存空间和其它资源,并已被初始化。

就绪runnable:处于new状态的Thread被启动后start(),将进入线程队列排队等待CPU时间片,此时它已经具备了运行条件,一旦轮到它来享用CPU资源,就可以脱离创建它的主线程独立运行。哪些处于阻塞状态的线程被解除阻塞后也会进入就绪状态。

运行running:当就绪状态的Thread被调度获得CPU资源时,便进入运行状态。每一个Thread类都有一个重要的run()方法,当线程被调度执行时,它将自动调用run方法,从第一句开始顺序执行。

阻塞block:一个正在执行的Thread在某些特殊情况下,如被认为挂起,将让出CPU资源暂时终止自己的执行,进入阻塞状态。阻塞时不能进入排队队列,只有当阻塞消失后才可以转入就绪状态,重新进入到线程队列中排队等待CUP资源,以便从原来中止处开始继续执行。

死亡DEAD:处于死亡状态的线程不具有继续运行的能力。有两个原因导致线程死亡,一个是Thread运行完run方法的最后一个语句并退出。另一个原因是线程被强制中止,stop()或destroy()方法。

package com.example.restservice;
public class ThreadTest extends Thread {
      private int countdown = 3;
      private int threadNumber;
      private static int threadCount = 0;
      
      public ThreadTest() {
    	  threadNumber = ++threadCount;
    	  System.out.println("Creating a new Thread " + threadNumber);
      }
      
      public void run() {
    	  while(true) {
    		  System.out.println("Thread " + threadNumber + " running(" + countdown + ")" );
    		  if(--countdown == 0) {
    			  System.out.println("Thread " + threadNumber + " dead");
    			  return;
    		  }
    	  }
      }
      public static void main(String[] arg) {
    	  for(int i=0; i<=5; i++) {
    		  new ThreadTest().start();
    	  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值