Java多线程基础
文章平均质量分 66
豆恭梓
在读计算机研究生一枚^_^
展开
-
Java线程通信(面试题)
4. 【使用】wait如果不加具体时间需要手动唤醒,让其退出wait set,而sleep必须添加休眠时间,时间结束后,自动退出阻塞状态。\2. 都是可以被打断的(如:调用线程的interrupt方法),需要捕捉InterruptedException;\1. 【来源】wait是Object的方法,sleep是Thread的一个静态方法;\3. 【使用】wait需要在同步代码块或者同步方法内使用,而sleep不需要;面试题:sleep() 和 wait()的异同?\1. 都是用来将线程转为阻塞状态的。原创 2023-06-14 15:30:45 · 892 阅读 · 0 评论 -
Java中的死锁和Lock锁
不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。Lock→同步代码块(已经进入了方法体,分配了相应资源) >同步方法。线程1拿到s1的锁等待s2的锁,线程2拿到s2的锁等待s1的锁…主线程拿到A的锁,等待B锁,分线程拿到B锁 等待A锁…synchronized与Lock的对比。尽量减少同步资源的定义。原创 2023-06-14 15:18:06 · 1486 阅读 · 0 评论 -
Java线程的同步机制(synchronized关键字)
join底层调用的是wait(),而wait是Object的方法,wait本身是会释放锁(彻底交出CPU的执行权),所以 Thread 的join() 方法是否会释放锁?但是,join()只会释放Thread的锁,不会释放线程对象的锁(可能会造成死锁)。●线程执行同步代码块时,其他线程调用了该线程的suspend()方法将该线程。●线程执行同步代码块或同步方法时,程序调用Thread.sleep()、●当前线程在同步代码块、同步方法中执行了线程对象的。●当前线程的同步方法、同步代码块执行结束。原创 2023-06-14 12:13:17 · 915 阅读 · 0 评论 -
Java创建线程的四种方式和线程的生命周期(面试题彻底搞懂)
我们可以通过使用notify()和notifyAll()方法启动一个通过wait()方法进入等待状态的线程。wait()方法必须从同步(synchronized)的上下文调用,即同步块或方法,否则会抛出IllegalMonitorStateException异常。线程通信:wait() / notify() / notifyAll() :此三个方法定义在Object类中的。问题一:我们启动一个线程,必须调用start(),不能调用run()的方式启动线程。但是只是从概率上讲,高优先级的线程高概率的情况下。原创 2023-06-14 11:31:03 · 416 阅读 · 0 评论 -
Java多线程、进程、并行、并发的理解(通俗易懂)
概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事。概念:程序的一次执行过程,或是正在运行的一个程序。的单位,系统在运行时会为每个进程分配不同的内存区域。的运行栈和程序计数器(pc),线程切换的开销小。比如:多个人同时做不同的事。为线程,是一个程序内部的一条执行路径。进程可以细化为多个线程。原创 2023-06-09 21:30:40 · 575 阅读 · 0 评论