多线程
盲流子开发
这个作者很懒,什么都没留下…
展开
-
notify和notifyall的区别
讲解之前先贴上一篇代码,如下代码线程A中执行lock.wait()方法,不设置等待时间,设置无限等待public static void main(String[] args) { final Object lock = new Object(); new Thread(new Runnable() { @Override ...原创 2020-03-26 16:48:38 · 4799 阅读 · 2 评论 -
sleep和wait的区别
1. 基本的差别sleep是Thread类的方法,wait是Object类中定义的方法sleep方法可以在任何地方使用 ,wait方法只能在synchronized方法或synchronized块中使用2. 最主要的本质区别Thread.sleep只会让出CPU, 不会导致锁行为的改变即如果当前线程拥有锁,那么Thread.sleep不会让线程释放锁,而只会主动让出CPU,CPU会可以去...原创 2020-03-26 15:57:13 · 423 阅读 · 0 评论 -
线程的状态
我们打开Thread类的源码,搜索State字段,会看到State的枚举值 public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for...原创 2020-03-26 14:54:52 · 134 阅读 · 0 评论 -
实现处理线程的返回值
1. 给run()方法传参实现的方式主要有三种构造函数传参成员变量传参(set)回调函数传参这里不贴具体代码。可以自行实验2. 如何实现处理线程的返回值2.1 主线程等待法主线程等待法实现起来比较简单,但是必须自己实现线程等待逻辑,当需要等待的变量一多,代码会变得异常的臃肿,而且无法控制等待多久,无法精准控制2.2 使用Thread类的join()阻塞当前线程以等待子线...原创 2020-03-26 14:10:13 · 401 阅读 · 0 评论 -
Thread和Runnable的关系
1. 简介Thread是一个类,而Runnable是一个接口。Thread类实现了Runnable接口,Runnable接口里只有一个抽象的run()方法。说明Runnable不具备多线程的特性。Runnable依赖Thread类的start方法创建一个子线程,再在这个子线程里调用run()方法,才能让Runnable接口具备多线程的特性2. 使用Thread创建线程创建一个自定义类...原创 2020-03-26 11:42:18 · 3057 阅读 · 0 评论 -
线程的start方法和run方法的区别
1. 使用run方法启动线程public class ThreadTest { private static void attack() { System.out.println("Fight"); System.out.println("Cuurrent Thread is : " + Thread.currentThread().getName());...原创 2020-03-26 11:13:30 · 760 阅读 · 0 评论