学习目的: 补充Java基础,了解多线程 为之后分布式,高并发打基础
学习原因: 想要了解多线程 准备面试 大佬推荐
学习方法:
- 浏览书籍目录,知道每章大概的主题
- 阅读具体章节的时候,带着问题去看
- 这本书里面几乎80%的内容都是代码,要去手敲实现并运行
学习感想: 因为自己目前还处于学习阶段, 感悟还没有那么多。感悟到的是学习这本书的时候,你更多的时间在于编写代码(虽然官方有源代码提供,文章底部会放上源代码的链接),并且这本书中的代码给的例子的大概层次是比较的简单的 举个栗子:
关键字synchronized加在static方法上意味着是给当前class类上锁这一节中
如:
Service:
public class Service {
synchronized public static void printA() {
try {
System.out.println("线程名称为:" + Thread.currentThread().getName()
+ " 在" + System.currentTimeMillis() + " 进入printA");
Thread.sleep(3000);
System.out.println("线程名称为:" + Thread.currentThread().getName()
+ " 在" + System.currentTimeMillis() + " 离开printA");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
synchronized public static void printB() {
try {
System.out.println("线程名称为:" + Thread.currentThread().getName()
+ " 在" + System.currentTimeMillis() + " 进入printB");
Thread.sleep(3000);
System.out.println("线程名称为:" + Thread.currentThread().getName()
+ " 在" + System.currentTimeMillis() + " 离开printB");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
ThreadA B....and more:
public class ThreadA extends Thread {
@Override
public void run() {
Service.printA();
}
}
Run:
public class Run {
public static void main(String[] args) {
ThreadA a = new ThreadA();
a.setName("a");
a.start();
ThreadB b = new ThreadB();
b.setName("b");
b.start();
}
}
- Service: 具体的场景用例...里面的内容是你在输出台上看着的
- ThreadA B...and more: 多线程及run方法的重写
- Run: Main函数
敲久了并思考代码想要表达的意思是什么,并及时的总结出来, 还是举个栗子
第二章是有关多线程中对并发访问的控制,说的简单点就是synchronized的各种使用,里面的代码大概有这些
来自于官方提供的源代码
你要抓住的几点就是synchroized关键字放在方法上的锁的是当前的对象,得到的是当前对象的锁等概念,大部分的篇幅在于这些概念的代码证明
暂且想到这么多...有其他想法的话会后序补上,实验室的小伙伴有其他建议的话也可以提出来
源代码链接: 链接:http://pan.baidu.com/s/1mginA9E 密码:62i3