第一章、Java多线程基础

本文介绍了Java线程的基础知识,包括线程与进程的区别、线程的创建方式、生命周期、优先级、休眠与礼让、终止方法以及常用线程方法。

一、线程的创建、启动及生命周期

1、线程和进程的区别?

  进程:内存中运行的程序,每个进程都有着独立的内存空间,一个进程中可以有多个线程

  线程:进程中独立运行的子任务

2、线程的三种创建方式

  • 继承Thread类
  • 实现Runnable接口
  • 实现Callable接口

 第一种方式编写和启动都简单,但是第二、三种方式更灵活,可以同时继承其他类和实现其他接口

public class MyThread extends Thread{//继承Thread  public void run(){
      //重写run方法实现业务逻辑
  }
}
public class MyRunable extends Runnable {//继承Thread
  public void run(){
      //重写run方法实现业务逻辑
  }
}

public class Main {  
    public static void main(String[] args) {    new MyThread().start();//创建并启动线程
        Thread MyRunable = new Thread(new MyRunnable());
        myRunnable.start();
        //实现Callable接口的方式和runnable接口方式类型,通过FutureThread来创建启动线程
   }
}


3、线程的生命周期

  流程图:

                

  • 新建状态(New):处于新建,和Java对象一样吗,JVM仅分配了内存和进行了初始化,
  • 可运行状态(Ready):也成为就绪状态,线程对象调用start()方法后,改线程进入线程队列中等待CUP的调度
  • 运行状态(Running):当前线程获得CUP调度,执行Run()方法体
  • 阻塞状态(Blocked):正在执行的线程因为某种原因(sleep、同步、suspend)让出CUP的资源,不被CUP所调用,停止执行方法体。
  • 终止(Terminated):也称为线程死亡状态,线程执行Run()方法结束。

注意事项:

   主线程结束后,子线程不受影响,也就是说子线程和主线程拥有相同的地位已经死亡的线程不可使用start()方式进行唤醒。

3、线程的优先级

   线程的执行有着随机性,线程的优先级只是设置线程被CPU调用的权重大小,并不是优先级高的线程就会比优先级低的线程要先执行。通过myThread.setPriority()的方法设置,权重最大值为10,最小为1,默认为5.(线程优先级具有继承性)

4、线程休眠和线程礼让(暂停线程)

  • 线程休眠:Thread.sleep()方法可以使当前线程进入阻塞状态,待休眠时间结束进入就绪状态
  • 线程礼让:Thread.yield()可以使CPU暂停当前线程的执行,当前线程进入就绪状态,等待CPU的再次调度
  • 线程暂停和恢复运行:myThread.suspend(),myThread.resume() 过时方
注意:如果当前线程获取了某个/当前对象的同步锁,sleep()方法和yield不不会使得当前线程释放同步锁


5、线程终止

  线程终止是线程停止运行并走向线程死亡的状态,日常工作中常用的方法有 throw Exception、return 等方法,还有已过时的stop()方法(stop方法是暴力停止线程方法,不建议使用的)

6、常用的线程方法

  • Thread.currentThread() 获取当前线程,getName(),getId()方法跟别获取线程的名称和id
  • myThread.isAlive() 判定某个线程是否存活,线程启动到线程未死亡状态都属于存活







源码来自:https://pan.quark.cn/s/41b9d28f0d6d 在信息技术领域中,jQuery作为一个广受欢迎的JavaScript框架,显著简化了诸多操作,包括对HTML文档的遍历、事件的管理、动画的设计以及Ajax通信等。 本篇文档将深入阐释如何运用jQuery达成一个图片自动播放的功能,这种效果常用于网站的轮播展示或幻灯片演示,有助于优化用户与页面的互动,使网页呈现更加动态的视觉体验。 为了有效实施这一功能,首先需掌握jQuery的核心操作。 通过$符号作为接口,jQuery能够迅速选取DOM组件,例如$("#id")用于选取具有特定ID的元素,而$(".class")则能选取所有应用了某类class的元素。 在选定元素之后,可以执行多种行为,诸如事件监听、样式的变更、内容的更新以及动画的制作等。 关于“一个基于jQuery的图片自动播放功能”,首要任务是准备一组图片素材,这些素材将被整合至一个容器元素之中。 例如,可以构建一个div元素,将其宽度设定为单张图片的尺寸,再借助CSS实现溢出内容的隐藏,从而构建出水平滚动的初始框架。 ```html<div id="slider"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <!-- 更多图片内容... --></div>```接着,需要编写jQuery脚本以实现图片的自动切换。 这通常涉及到定时器的运用,以设定周期性间隔自动更换当前显示的图片。 通过使用`.fadeOut()`和`.fadeIn()`方法,能够实现图片间的平滑过渡,增强视觉效果。 ```javascript$(document).re...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值