摘要: 线程可以处于以下状态之一: NEW 尚未启动的线程处于此状态。 RUNNABLE 在Java虚拟机中执行的线程处于此状态。 BLOCKED 被阻塞等待监视器锁定的线程处于此状态。 WAITING 正在等待另一个线程执行特定动作的线程处于此状态。 TIMED_WAITING 正在等待另一个线程执行动作 阅读全文
posted @ 2022-05-14 21:47 Epiphany8Z 阅读(16) 评论(0) 推荐(0) 编辑
摘要: Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 可以了解成插队 public class ThreadJoin implements Runnable{ @Override public void run() { try { Thread.sleep(100); } catch 阅读全文
posted @ 2022-05-14 21:02 Epiphany8Z 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 礼让线程,让当前正在执行的线程暂停,但不阻塞 将线程从运行状态转为就绪状态 让cpu重新调度,礼让不一定成功!看CPU心情 代码: public class ThreadYield implements Runnable{ public static void main(String[] args) 阅读全文
posted @ 2022-05-14 20:53 Epiphany8Z 阅读(16) 评论(0) 推荐(0) 编辑
摘要: sleep(时间)指定当前线程阻塞的毫秒数; sleep存在异常InterruptedException; sleep时间达到后线程进入就绪状态; sleep可以模拟网络延时,倒计时等。 每一个对象都有一个锁,sleep不会释放锁; 倒计时Demo: public class ThreadSleep 阅读全文
posted @ 2022-05-14 20:45 Epiphany8Z 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 建议线程正常停止:利用次数,不建议死循环。 建议使用标志位:设置一个标志位 不要使用stop或者destroy等过时或者JDK不建议使用的方法 public class ThreadStop implements Runnable{ private boolean flag = true; publ 阅读全文
posted @ 2022-05-14 20:30 Epiphany8Z 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 流程: 详细: 方法 说明 setPriority(int newPriority) 更改线程的优先级 static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠线程 void join() 等待该线程终止 static void yield() 暂停当前 阅读全文
posted @ 2022-05-14 20:18 Epiphany8Z 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 1. Lambda(λ)表达式: λ希腊字母表中排序第十一位的字母,英语名称为Lambda 避免匿名内部类定义过多 其实质属于函数式编程的概念 2. 为什么要使用Lambda表达式? 避免匿名内部类定义过多 可以让你的代码看起来很简洁 去掉了一堆没有意义的代码,只留下核心的逻辑。 3. 也许你会说, 阅读全文
posted @ 2022-05-14 19:36 Epiphany8Z 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 对比: new WeddingCompany(new You()).HappyMarry(); new Thread(()->{System.out.println("我爱你");}).start(); 静态代理总结: 真实对象和代理对象需要实现同一个接口 代理对象需要代理真是角色 静态代理好处: 阅读全文
posted @ 2022-05-14 03:35 Epiphany8Z 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 步骤: 实现Callable接口,需要返回值类型 重写call方法,需要抛出异常 创建目标对象 创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1); 提交执行:Future<Boolean> result1 = ser.submi 阅读全文
posted @ 2022-05-14 03:13 Epiphany8Z 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 案例: 首先来个赛道距离,然后要离终点越来越近 判断比赛是否结束 打印出胜利者 龟兔赛跑开始 故事中是乌龟赢的,兔子需要睡觉,所以我们来模拟兔子睡觉 终于,乌龟赢得比赛 代码: public class Race implements Runnable{ final int nums=100; pr 阅读全文
posted @ 2022-05-14 02:58 Epiphany8Z 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 模拟买票的场景:张三、李四和王五一起买票。 代码: public class TicketThread implements Runnable{ private int ticket =3; public static void main(String[] args) { TicketThread 阅读全文
posted @ 2022-05-14 02:32 Epiphany8Z 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 继承Thread类: 子类继承Thread类具备多线程能力启动线程:子类对象. start() 不建议使用:避免OOP单继承局限性 实现Runnable接口: 实现接口Runnable具有多线程能力 启动线程:传入目标对象+Thread对象.start() 推荐使用:避免单继承局限性,灵活方便,方便 阅读全文
posted @ 2022-05-14 02:22 Epiphany8Z 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 步骤: 定义MyRunnable类实现Runnable接口 实现run()方法,编写线程执行体 创建线程对象(将MyRunnable实例作为线程对象创建时的参数),调用start()方法启动线程 代码: public class MyRunnable implements Runnable{ @Ov 阅读全文
posted @ 2022-05-14 02:20 Epiphany8Z 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 步骤: 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 //方式一:继承Thread类 public class Demo01 extends Thread{ //主线程 public static void main(String[ 阅读全文
posted @ 2022-05-14 01:45 Epiphany8Z 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-05-14 01:23 Epiphany8Z 阅读(18) 评论(0) 推荐(0) 编辑
摘要: Process和Thread 说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。 而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是 阅读全文
posted @ 2022-05-14 01:17 Epiphany8Z 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-05-14 01:15 Epiphany8Z 阅读(17) 评论(0) 推荐(0) 编辑