当前位置: 首页 > wzjs >正文

软件著作权和专利的区别福州抖音seo

软件著作权和专利的区别,福州抖音seo,陕西住房和城乡建设网站,wordpress怎么在首页添加友情链接Java线程基础操作详解 前言1. 线程创建1.1 继承Thread类1.2 实现Runnable接口1.3 匿名内部类1.4 lambda表达式 2. 线程中断3. 线程等待4. 线程休眠 前言 在Java编程里,线程是实现多任务处理的关键概念。本文会详细讲解Java中线程的创建、中断、等待以及休眠等操作&…

Java线程基础操作详解

    • 前言
    • 1. 线程创建
      • 1.1 继承Thread类
      • 1.2 实现Runnable接口
      • 1.3 匿名内部类
      • 1.4 lambda表达式
    • 2. 线程中断
    • 3. 线程等待
    • 4. 线程休眠

前言

在Java编程里,线程是实现多任务处理的关键概念。本文会详细讲解Java中线程的创建、中断、等待以及休眠等操作,通过丰富代码示例和详细解释,助力你理解相关知识。

1. 线程创建

1.1 继承Thread类

创建一个类继承Thread类,并重写其run方法,以此定义线程的执行逻辑。run方法是线程入口,线程启动时,run方法自动执行,无需手动调用。start方法用于真正创建并启动线程(由JVM调用系统API完成线程创建),且start方法只能调用一次(一个线程仅能创建一次)。

示例代码如下:

class MyThread extends Thread {@Overridepublic void run() {System.out.println("Thread类");}
}public class Main {public static void main(String[] args) {// 创建线程对象Thread t = new MyThread();// 启动线程t.start();}
}

1.2 实现Runnable接口

创建一个实现Runnable接口的类,重写其run方法。这里创建的实现类对象实际上是一个任务,并非直接创建线程。把该任务对象传递给Thread类的构造函数,从而创建线程对象。这种方式符合解耦合原则,在实际开发中更为常用,因为它将任务逻辑与线程本身分离,修改任务时不影响线程其他部分,提升了代码可维护性。

示例代码如下:

// 实现Runnable接口的类
class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("runnable接口");}
}public class Demo1 {public static void main(String[] args) {// 创建线程对象Thread t = new Thread(new MyRunnable());// 启动线程t.start();}
}

1.3 匿名内部类

使用匿名内部类方式能更简洁地创建线程,无需显式创建Thread子类或Runnable实现类。这种方式可直接在代码中定义线程执行逻辑,提高代码紧凑性。

示例代码如下:

public class Demo2 {public static void main(String[] args) {// 匿名内部类——继承Thread类Thread t1 = new Thread() {@Overridepublic void run() {System.out.println("匿名内部类——Thread类");}};t1.start();// 匿名内部类——实现Runnable接口Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("匿名内部类——Runnable接口");}};Thread t2 = new Thread(runnable);t2.start();}
}

1.4 lambda表达式

使用lambda表达式是对实现Runnable接口的匿名内部类的简化写法。它通过更简洁语法定义线程执行逻辑,让代码更清晰易读。

示例代码如下:

public class Demo3 {public static void main(String[] args) {// 使用lambda表达式实现Runnable接口Thread t = new Thread(() -> {System.out.println("lambda ");});t.start();}
}

2. 线程中断

在Java中,线程中断主要涉及以下几个方法:

方法名描述
interrupt()中断对象关联的线程。若线程正在阻塞,则以异常形式通知;否则设置中断标识位。
isInterrupted()判断对象关联的线程的中断标识位是否设置,调用后不清除该标志位。
interrupted()判断当前线程的中断标识位是否设置,调用后会清除该标识位。

以下是一个线程中断的示例代码:

public class Demo5 {public static void main(String[] args) throws InterruptedException {Thread t = new Thread(() -> {for (int i = 0; i < 5; i++) {if (!Thread.currentThread().isInterrupted()) {System.out.println("线程执行中...");System.out.println("线程是否中断:" + Thread.currentThread().isInterrupted());Thread.currentThread().interrupt();}}});t.start();t.join();System.out.println("线程是否中断:" + t.isInterrupted());}
}

在这里插入图片描述

3. 线程等待

在Java中,可使用join()方法等待一个线程执行完毕。join()方法有以下几种重载形式:

方法名描述
join()等待线程结束。
join(long mills)等待线程结束,最多等待mills毫秒。
join(long mills, int nanos)等待线程结束,提供更高时间精度,最多等待mills毫秒和nanos纳秒。

以下是不使用join()方法和使用join()方法的示例对比:
不使用join()方法时

public class Demo6 {public static void main(String[] args) {// 创建一个线程Thread t = new Thread(() -> {for (int i = 0; i < 10; i++) {System.out.println("t线程执行");}});// 启动线程t.start();System.out.println("主线程结束");}
}

使用join(long mills)方法时

public class Demo6 {public static void main(String[] args) {// 创建一个线程Thread t = new Thread(() -> {for (int i = 0; i < 10; i++) {System.out.println("t线程执行");}});// 启动线程t.start();// 等待t线程运行结束try {**t.join()**;} catch (InterruptedException e) {e.printStackTrace();}System.out.println("主线程结束");}
}

使用join(long mills)方法并设置较短等待时间时

public class Demo6 {public static void main(String[] args) {// 创建一个线程Thread t = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("t线程执行");}});// 启动线程t.start();// 等待t线程运行结束try {**t.join(1)**;} catch (InterruptedException e) {e.printStackTrace();}System.out.println("主线程结束!!!!");}
}

4. 线程休眠

在Java中,可使用sleep()方法让当前线程暂停执行一段时间。sleep()方法有以下两种重载形式:

方法名描述
sleep(long mills)使当前线程休眠mills毫秒。
sleep(long mills, int nanos)使当前线程休眠,提供更高精度,可休眠mills毫秒和nanos纳秒。

以下是一个线程休眠的示例代码:

public class Demo7 {public static void main(String[] args) {Thread t = new Thread(() -> {for (int i = 0; i < 10; i++) {System.out.println("线程t");try {**Thread.sleep(1000)**;// 线程休眠1秒} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();}
}

通过本文介绍,希望你对Java中线程的基本操作有更深入理解,能在实际开发中灵活运用这些知识实现多线程编程。

http://www.dtcms.com/wzjs/565631.html

相关文章:

  • 无锡建设网站制作购物商城系统
  • 都匀住房和城乡建设部网站谁有马和人做的网站
  • 婚纱影楼网站免费源码网站建设注意事项
  • 淄博网站建设至信网络川畅互联咨询 网站建设
  • 学校网站建设报价单购物网站开题报告
  • 深圳市seo网站设计凡客之家贷款返佣推广平台
  • 网站建设服务商1元涨1000粉丝网站
  • 怎么免费建立自己的网站步骤天津建设银行网站首页
  • 微网站栏目网页设计大赛网站开发
  • 网站开发项目周报无锡seo公司网站
  • 企业网站设计模板免费下载海尔建设此网站的目的是什么意思
  • 暖通设计网站推荐做网站前必须设计原型吗
  • 东莞网站建设 鞋材厂沧浪设计网站公司
  • 电商网站制作价格亚洲成成品网站有线
  • 邢台网站改版定制小程序设计页面
  • 北京专业网站建设网站推广网站建设和维护人员职责
  • 西宁网站建设西宁市场调研报告1000字
  • 网站开发运用到的相关技术上海网站建设 找德华专业
  • 企业网站建设在网络营销中的地位与作用上海社区网站建设
  • 朝阳网站设计厦门seo排名扣费
  • 可以做高中题目的网站大姚县建设工程招标网站
  • linux 网站建设模板沈阳网站推广优化排名公司
  • 网站的电子地图怎么做欧式建筑网站
  • 网站更新维护 怎么做设计事务所
  • 河北省住房建设厅网站asp网站做消息提醒功能
  • 企业网站管理系统多少钱一年摄影建设网站
  • 网站建设落地页源码网站图怎么做
  • 做钓鱼网站教程视频教程厦门企业网站建设补贴
  • 找人做自建房图纸去哪个网站成都网站开发培训多少钱
  • 艾迪网络专业的网站建设公司延安网站建设报价