Java基础系列

您所在的位置:网站首页 宠物技能书怎么获得 Java基础系列

Java基础系列

2024-07-14 11:23:35| 来源: 网络整理| 查看: 265

Java基础系列

第一章 创建Thread的6种方式和线程常用方法 第二章 synchronized用法和解析 第三章 Netty的NIO通讯讲解

在这里插入图片描述

文章目录 Java基础系列前言一、创建线程1. 通过Thread子类创建线程2. 使用runnable创建线程2.1 通过函数式接口创建线程2.2 通过内部匿名类创建线程2.3 通过runnable子类创建线程 3. 使用匿名内部类创建线程4. 使用线程池创建线程 二、线程常用静态方法三、线程实例常用方法四、线程基本状态总结

前言

读完本章节,您将掌握如何创建线程和线程的常用方法。

一、创建线程 1. 通过Thread子类创建线程 public class MyThread extends Thread { @Override public void run() { System.out.println("通过Thread子类创建线程"); } } //通过Thread子类创建线程 public void createThread1() { MyThread t = new MyThread(); t.start(); } 2. 使用runnable创建线程 2.1 通过函数式接口创建线程 //使用runnable创建线程-函数式接口 public void createThread2() { Thread t = new Thread(() -> System.out.println("使用runnable创建线程1")); t.start(); } 2.2 通过内部匿名类创建线程 //使用runnable创建线程-内部匿名类 public void createThread3() { Thread t = new Thread(new Runnable() { @Override public void run() { System.out.println("使用runnable创建线程2"); } }); t.start(); } 2.3 通过runnable子类创建线程 public class MyRunnable implements Runnable { @Override public void run() { System.out.println("使用runnable创建线程3"); } } //使用runnable创建线程-runnable子类 public void createThread4() { MyRunnable runnable = new MyRunnable(); Thread t = new Thread(runnable); t.start(); } 3. 使用匿名内部类创建线程 //使用匿名内部类创建线程 public void createThread5() { Thread t = new Thread() { @Override public void run() { System.out.println("使用匿名内部类创建线程"); } }; t.start(); } 4. 使用线程池创建线程 @Resource private ThreadPoolExecutor threadPoolExecutor; @Bean public ThreadPoolExecutor executor() { int processors = Runtime.getRuntime().availableProcessors(); return new ThreadPoolExecutor( Math.max(processors * 4, 6), Math.max(processors * 4, 8), 0L, TimeUnit.MILLISECONDS, new LinkedBlockingDeque(100000), runnable -> { Thread r = new Thread(runnable); r.setName("thread-"); return r; } ); } //使用线程池创建线程 public void createThread6() { threadPoolExecutor.execute(() -> System.out.println("使用线程池创建线程")); } 二、线程常用静态方法 //线程常用静态方法 public void threadStaticMethod() throws InterruptedException { //将当前线程设为让步状态,表示当前线程愿意让出CPU资源使得其他线程执行。 //将当前线程设为待运行就绪状态,再从线程池中取出可运行的线程执行后续逻辑,有可能取到刚放回去的当前线程。 Thread.yield(); //线程休眠(阻塞)100ms Thread.sleep(100L); //获取当前线程的信息 Thread.currentThread(); //返回当前线程的线程组中活动线程的数量。(返回的值只是一个估计值) Thread.activeCount(); //获取线程中断标志位 Thread.interrupted(); } 三、线程实例常用方法 //线程实例常用方法 public void threadMethod() throws InterruptedException { Thread t = new Thread(() -> System.out.println("线程实例常用方法")); //当前线程等待t线程执行直到t执行完成 //要让join方法正常生效,调用join方法的线程对象必须已经调用了start()方法并且未进入终止状态。 //常见面试题:现在有T1、T2,你怎样保证T2在T1执行完之后执行,就可以在T2中调用t1.join()实现。 t.join(); //挂起当前线程和释放synchronized同步锁 //wait()和notify()、notifyAll()都是java.lang.Object的方法。 t.wait(); //设为后台线程(守护线程) //java线程分为后台线程与前台线程,其中后台线程不会影响到进程的退出,而前台线程会影响进程的退出。 //比如有线程t1与线程t2,当这两个线程为前台线程时,main方法执行完毕时,t1与t2不会立即退出,要等到线程执行完毕,整个进程才会退出,反之,当这两个线程为后台线程时,main方法执行完毕时,t1与t2线程被强制结束,整个进程也就结束了。 t.setDaemon(true); //使用interrupt方法修改线程中断标志位为true,默认为false t.interrupt(); //获取线程中断标志位 //在线程run()方法里可以通过Thread.currentThread().isInterrupted()获取标志位。但是调用interrupt方法遇到线程run()方法里调用 wait/join/sleep 等方法而阻塞线程时会使sleep等方法抛出异常,并且中断标志位不会修改为true //可通过静态方法Thread.interrupted()代替,但注意:一个程序里Thread.interrupted()是共用的。 t.isInterrupted(); //以同步方式执行方法,不创建新线程 t.run(); //创建线程并执行run方法 t.start(); } 四、线程基本状态

NEW: 初始化状态。初始化线程对象,这时没有执行start方法,java内部的状态,与进程中的状态无关。 RUNNABLE: 就绪状态。分两种:RUNNABLE运行中,READY待运行。 BLOCKED: 阻塞状态。线程正在等待锁释放而引起的阻塞状态(synchronized加锁)。 WAITING: 等待状态。线程正在等待等待唤醒而引起的阻塞状态(wait方法使线程等待唤醒)。 TIMED_WAITING: 超时等待状态。在一段时间内处于阻塞状态,通常是使用sleep或者join(带参数)方法引起。 TERMINATED:终止状态。Thread对象还存在,但是关联的线程已经工作完成了,java内部的状态,与进程中的状态无关。

在这里插入图片描述

总结

读完本章节,您已经掌握如何创建线程和线程的常用方法。可以动手按照示例代码自己敲下进行测试和巩固。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭