惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
J
Java Code Geeks
雷峰网
雷峰网
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
V
Vulnerabilities – Threatpost
S
Securelist
The Hacker News
The Hacker News
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
AI
AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
博客园 - 司徒正美
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
Security Latest
Security Latest
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
U
Unit 42
V
V2EX
V2EX - 技术
V2EX - 技术
L
LINUX DO - 最新话题
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
Recorded Future
Recorded Future
P
Privacy & Cybersecurity Law Blog
美团技术团队
小众软件
小众软件
F
Fortinet All Blogs

博客园 - JackMa

设计模式 外观 Facade 设计模式 适配器-Adapter 设计模式 命令-Command 设计模式 单件-Singleton 积累PDU 设计模式 工厂-Factory 设计模式 策略-Strategy,装饰-Decorator,观察者-Observer Red Hat Linux认证 认识Agile,Scrum和DevOps 博客目标 iOS Development Learning 13Nov 重新起步 iOS 开发 XML学习笔记(七)Schema语法杂项 XML学习笔记(六)Schema语法之复杂类型 UML和模式应用-第一部分:绪论 XML学习笔记(五)Schema语法之简单类型 XML学习笔记(四)Schema介绍篇 XML学习笔记(三)进阶篇 Xml学习笔记(二)Javascript篇
Java多线程编程
JackMa · 2016-03-19 · via 博客园 - JackMa

最近在重新整理学习Java的多线程。首先,考虑一下什么时候需要用到多线程。

通常是一些异步处理,后台任务,要尽量使资源最大化使用如CPU,I/O,Printer等等。可以参考以下

http://www.cnblogs.com/kenshinobiy/p/4671314.html

学习tutorialspoint的Java多线程编程后总结如下

http://www.tutorialspoint.com/java/java_multithreading.htm

首先要了解

Thread的Life Cycle和stage

Priority

每个Thread都有Priority。从1到10。Normal是5。

并不一定priority高的线程就能获得资源。priority只是提高概率。

Creation

创建一个线程的方法通常有两种。实现Runnable接口。或继承Thread。下文也有提到使用Executor框架。对该框架没做深入了解。

http://www.cnblogs.com/yezhenhan/archive/2012/01/09/2317636.html

Methods

具体Thread的方法可以参考JDK Reference

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

特别注意的是一些方法是Static,一些方法是Instance的方法。还有一些是从Object继承而来,如Notirfy和Wait等。这些主要用于线程通讯。

注意

直接call run方法和平时call一个Object是一样的。但用start,就会新起一个线程。

yield是让步。

join,等待一定时间等线程死亡。

守护线程的概念

相对用户线程。通过方法setDaemon可以使线程成为守护线程。通常守护线程负责管理线程的工作,不访问任何资源,当没有用户线程时最后退出。参考下文

http://www.cnblogs.com/luochengor/archive/2011/08/11/2134818.html

Sychonization和Deadlock

为保证资源的有序访问,防止同一资源被不同线程混乱操作,需要作同步管理Sychonization。其实就是使用锁。又叫Monitor。通常sychonized关键字会用来指定一个锁对象。然后在block中写代码。也可以声明方法。但一般推荐用block的形式。死锁通常由于sychonized的嵌套使用。

参考

http://www.tutorialspoint.com/java/java_thread_synchronization.htm

http://www.tutorialspoint.com/java/java_thread_deadlock.htm

Thread Communication

线程间通讯。其实主要是wait()和notify()方法的使用。wait使当前线程进入等待,直到有其他线程notify。notify唤醒一个正在当前对象锁的线程。

参考

http://www.tutorialspoint.com/java/java_thread_communication.htm

http://www.tutorialspoint.com/java/java_thread_control.htm

如果自认为对多线程有了初步的掌握,可以看看以下的问题,测试下自己是否都了解了。

http://www.cnblogs.com/kenshinobiy/p/4671302.html

http://www.ituring.com.cn/article/177182

生产者消费者模式 Producer-consumer pattern

说到多线程和并发必然要认识生产者消费者模式。该模式主要包含以下的要素

1)若干个生产者线程和消费者线程。

2)缓冲区。通常是一个FIFO的队列。

3)信号变量。监测缓冲区是否已满或者为空。

参考

http://www.infoq.com/cn/articles/producers-and-consumers-mode/

https://software.intel.com/zh-cn/blogs/2014/09/17/java-0

http://cmsblogs.com/?p=1300

最后两个链接,一个是Oracle Java JDK的concurrency指南。一个是IBM的系列文章。

http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html

https://www.ibm.com/developerworks/cn/java/j-concurrent/