进程 & 线程

进程 & 线程

  • 进程 : 进程是一次程序的执行,是一个程序及其数据在处理机上顺序执行时发生的活动,是程序在一个数据集合上运行的过程,它是系统进行资源调度的一个独立的单位
  • 线程: 线程可以理解为在进程中独立运行的子任务。如在QQ。exe 这个进程中,有下载文件线程、传输数据线程,发生数据线程等。
  • 一个进程至少含有一个线程。一个进程中的数据可以被多个进程共享
  • 在多线程中,线程的执行是异步的,调用顺序是随机的

实现多线程编程方式 :继承Thread 类、实现Runnable接口

public class Thread implements Runnable{}
public class myThread extends Thread{}

currentThread()方法

  • 返回代码正在被哪个线程调用的信息

isAlive()方法

  • 判断线程是否处于活动状态

    sleep()方法

  • sleep ()方法的作用是在指定的毫米数内让当前“正在执行的线程”休眠(暂停执行)

getId()方法

  • getId方法的作用是取得线程的唯一标识

停止线程

无法停止的线程

//类MyThread.class
public  class MyThread extends Thread{

    @Override
    public void run() {
        super.run();
        for(int i=0;i<=5000;i++){
            System.out.println("i="+(1+i));
        }
    }
}
//mian.class
public class Main{
    public static void main(String args[]){
        MyThread myThread=new MyThread();
        myThread.start();
        try {
            Thread.sleep(1000);
            Thread.interrupted();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

终止线程的三种方法

  1. 使用退出标志,使线程正常退出
  2. 使用stop()方法强行退出(不推荐)。stop()和suspend()以及resume()方法已经是过期的方法。容易产生不可预期的结果
  3. 使用interrupt()方法中断线程

判断线程停止

  • this.interrupted():测试当前线程是否已经中断
  • this.isInterrupted():测试线程是否已经中断

yield()方法

yield()方法的作用是放弃当前线程的CPU资源,将它让给其他任务去占用CPU执行时间.但是放弃的时间不确定,可能刚刚放弃,就会马上获取CPU时间片

线程优先级

  • 线程可以划分优先级,优先级较高的得到cpu的资源较多。CPU优先执行优先级较高的线程,setPriority()方法可以设置优先级(1~9)
  • 线程优先级具有继承性的特性,A线程创建B线程,B线程继承A线程的优先级
  • 线程优先级具有规则性,高优先级的线程大部分总是先执行完
  • 线程优先级还具有随机性,线程优先级高的线程不一定每次都先执行完

守护者线程

  • 在Java中有两种线程,一种是用户线程,一中是守护线程
  • 守护线程是特殊的线程,进程有不存在非守护线程时,守护线程会自动销毁。(thread.setDaemon(true)设置为守护线程)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值