摘要:Java提供了两种线程:守护线程和用户线程。守护线程又被称为“服务进程”、“精灵线程”、“后台线程”,是指在程序运行时在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分,通俗点讲,每一个守护线程都是JVM中非守护线程的“保姆”。典型例子就是“垃圾回收器”。只要JVM启动,它始终在运行 阅读全文
生产者消费者模式
2018-10-08 19:02 by 东风恶, 261 阅读, 0 推荐, 收藏, 编辑
摘要:生产者、消费者有很多的实现方法: - 用wait() / notify()方法 - 用Lock的多Condition方法 - BlockingQueue阻塞队列方法 可以发现在上面实现阻塞队列题中,BlockingQueue的实现基本都用到了类似的实现,将BlockingQueue的实现方式稍微包装 阅读全文
如何避免线程的死锁
2018-10-08 18:57 by 东风恶, 2747 阅读, 0 推荐, 收藏, 编辑
摘要:1.Java多线程中的死锁 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不能正常运行.形象的说就是:一个宝藏需要两把钥匙来打开,同时间正好来了两个人,他们一人一把钥匙,但是双方都再等着对方能交出钥匙来打开宝藏,谁都没释放自己的那 阅读全文
线程概述
2018-10-08 18:39 by 东风恶, 144 阅读, 0 推荐, 收藏, 编辑
摘要:1.创建线程方法 (1)继承Thread类 (2)实现Runnable接口 至于哪个好,不用说肯定是后者好,因为实现接口的方式比继承类的方式更灵活,也能减少程序之间的耦合度,面向接口编程也是设计模式6大原则的核心。 2.start()方法和run()方法的区别 只有调用了start()方法,才会表现 阅读全文
线程同步
2018-10-08 18:12 by 东风恶, 177 阅读, 0 推荐, 收藏, 编辑
摘要:当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图。如果每个线程使用的变量都是其他线程不会读取或修改的,那么就不会存在一致性问题。同样地,如果变量是只读的,多个线程同时读取该变量也不会有一致性问题。但是,当某个线程可以修改变量,而其他线程也可以读取或修改这个变量的时候,就需要对这些线 阅读全文