| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,8 +1,9 @@ | |||
| 1 | 1 | # 我的java学习笔记 | |
| 2 | 2 | ||
| 3 | - | ||
| 4 | 3 | 笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解java基础语法,想进一步深入学习的人 | |
| 5 | 4 | ||
| 5 | + 含**博客讲解**和**源码实例**,采用maven构建,分模块学习,涉及反射,代理,多线程,IO,集合类等核心知识。 | ||
| 6 | + | ||
| 6 | 7 | **如果觉得不错,请先在这个仓库上点个star吧**,这也是对我的肯定和鼓励,谢谢了。 | |
| 7 | 8 | ||
| 8 | 9 | 不定时进行调整和补充,需要关注更新的请 Watch、Star、Fork | |
@@ -19,18 +20,12 @@ | |||
| 19 | 20 | ||
| 20 | 21 | - [blogs](/blogs):博客文档 | |
| 21 | 22 | - [java-base](/java-base):java基础巩固部分的模块 | |
| 22 | - - [java-multithread](/java-multithread):多线程部分的模块 | ||
| 23 | + - [java-multithread](/java-multithread):多线程模块 | ||
| 23 | 24 | ||
| 24 | 25 | ||
| 25 | 26 | ||
| 26 | 27 | # 博客文档 | |
| 27 | 28 | ||
| 28 | - 笔记分为两大部分:javase和javaweb | ||
| 29 | - | ||
| 30 | - - [javase](/blogs/javase) | ||
| 31 | - - [javaweb](/blogs/javaweb) | ||
| 32 | - | ||
| 33 | - | ||
| 34 | 29 | **博客目录** | |
| 35 | 30 | ||
| 36 | 31 | - [javase](/blogs/javase) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,19 @@ | |||
| 1 | + # 博客目录 | ||
| 2 | + | ||
| 3 | + - [javase](/blogs/javase) | ||
| 4 | + - [java基础巩固笔记(1)-反射.md](/blogs/javase/java基础巩固笔记(1)-反射.md) | ||
| 5 | + - [java基础巩固笔记(2)-泛型.md](/blogs/javase/java基础巩固笔记(2)-泛型.md) | ||
| 6 | + - [java基础巩固笔记(3)-类加载器.md](/blogs/javase/java基础巩固笔记(3)-类加载器.md) | ||
| 7 | + - [java基础巩固笔记(4)-代理.md](/blogs/javase/java基础巩固笔记(4)-代理.md) | ||
| 8 | + - [java基础巩固笔记(4)-实现AOP功能的封装与配置的小框架.md](/blogs/javase/java基础巩固笔记(4)-实现AOP功能的封装与配置的小框架.md) | ||
| 9 | + - [java基础巩固笔记(5)-多线程之传统多线程.md](/blogs/javase/java基础巩固笔记(5)-多线程之传统多线程.md) | ||
| 10 | + - [java基础巩固笔记(5)-多线程之共享数据.md](/blogs/javase/java基础巩固笔记(5)-多线程之共享数据.md) | ||
| 11 | + - [java基础巩固笔记(5)-多线程之线程并发库.md](/blogs/javase/java基础巩固笔记(5)-多线程之线程并发库.md) | ||
| 12 | + - [java基础巩固笔记(6)-注解.md](/blogs/javase/java基础巩固笔记(6)-注解.md) | ||
| 13 | + - [javaweb](/blogs/javaweb) | ||
| 14 | + - [javaweb入门笔记(1)-Tomcat.md](/blogs/javaweb/javaweb入门笔记(1)-Tomcat.md) | ||
| 15 | + - [javaweb入门笔记(2)-http入门.md](/blogs/javaweb/javaweb入门笔记(2)-http入门.md) | ||
| 16 | + - [javaweb入门笔记(3)-Servlet.md](/blogs/javaweb/javaweb入门笔记(3)-Servlet.md) | ||
| 17 | + - [javaweb入门笔记(4)-request和response.md](/blogs/javaweb/javaweb入门笔记(4)-request和response.md) | ||
| 18 | + - [javaweb入门笔记(5)-cookie和session.md](/blogs/javaweb/javaweb入门笔记(5)-cookie和session.md) | ||
| 19 | + - [javaweb入门笔记(6)-JSP技术.md](/blogs/javaweb/javaweb入门笔记(6)-JSP技术.md) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example3; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + | ||
| 7 | + public class MyObject { | ||
| 8 | + synchronized | ||
| 9 | + public void methodA(){ | ||
| 10 | + try { | ||
| 11 | + System.out.println("begin methodA threadName="+Thread.currentThread().getName()); | ||
| 12 | + Thread.sleep(5000); | ||
| 13 | + System.out.println(Thread.currentThread().getName()+" end"); | ||
| 14 | + } catch (InterruptedException e) { | ||
| 15 | + e.printStackTrace(); | ||
| 16 | + } | ||
| 17 | + } | ||
| 18 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,40 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example3; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + | ||
| 7 | + /** | ||
| 8 | + * P60 | ||
| 9 | + * synchronized方法与锁对象 | ||
| 10 | + */ | ||
| 11 | + public class Run3_synchronized01 { | ||
| 12 | + public static void main(String[] args) { | ||
| 13 | + MyObject object = new MyObject(); | ||
| 14 | + ThreadA a = new ThreadA(object); | ||
| 15 | + a.setName("A"); | ||
| 16 | + ThreadB b = new ThreadB(object); | ||
| 17 | + b.setName("B"); | ||
| 18 | + a.start(); | ||
| 19 | + b.start(); | ||
| 20 | + } | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + /* | ||
| 24 | + public void methodA()没加synchronized | ||
| 25 | + 输出: | ||
| 26 | + begin methodA threadName=B | ||
| 27 | + begin methodA threadName=A | ||
| 28 | + A end | ||
| 29 | + B end | ||
| 30 | + | ||
| 31 | + ------------------- | ||
| 32 | + | ||
| 33 | + public void methodA()加synchronized | ||
| 34 | + 输出: | ||
| 35 | + begin methodA threadName=A | ||
| 36 | + A end | ||
| 37 | + begin methodA threadName=B | ||
| 38 | + B end | ||
| 39 | + | ||
| 40 | + */ | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example3; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + public class ThreadA extends Thread{ | ||
| 7 | + private MyObject object; | ||
| 8 | + public ThreadA(MyObject object){ | ||
| 9 | + super(); | ||
| 10 | + this.object = object; | ||
| 11 | + } | ||
| 12 | + | ||
| 13 | + @Override | ||
| 14 | + public void run() { | ||
| 15 | + super.run(); | ||
| 16 | + object.methodA(); | ||
| 17 | + } | ||
| 18 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example3; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + public class ThreadB extends Thread{ | ||
| 7 | + private MyObject object; | ||
| 8 | + public ThreadB(MyObject object){ | ||
| 9 | + super(); | ||
| 10 | + this.object = object; | ||
| 11 | + } | ||
| 12 | + | ||
| 13 | + @Override | ||
| 14 | + public void run() { | ||
| 15 | + super.run(); | ||
| 16 | + object.methodA(); | ||
| 17 | + } | ||
| 18 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,28 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example4; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + | ||
| 7 | + public class MyObject { | ||
| 8 | + synchronized public void methodA(){ | ||
| 9 | + try { | ||
| 10 | + System.out.println("begin methodA threadName="+Thread.currentThread().getName()); | ||
| 11 | + Thread.sleep(5000); | ||
| 12 | + System.out.println(Thread.currentThread().getName()+" endTime:"+System.currentTimeMillis()); | ||
| 13 | + } catch (InterruptedException e) { | ||
| 14 | + e.printStackTrace(); | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + synchronized | ||
| 19 | + public void methodB(){ | ||
| 20 | + try { | ||
| 21 | + System.out.println("begin methodB threadName="+Thread.currentThread().getName()); | ||
| 22 | + Thread.sleep(5000); | ||
| 23 | + System.out.println(Thread.currentThread().getName()+" endTime:"+System.currentTimeMillis()); | ||
| 24 | + } catch (InterruptedException e) { | ||
| 25 | + e.printStackTrace(); | ||
| 26 | + } | ||
| 27 | + } | ||
| 28 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,43 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example4; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + | ||
| 7 | + /** | ||
| 8 | + * P63 | ||
| 9 | + * 两个线程访问同一个对象的不同方法 | ||
| 10 | + * 1.一个方法有synchronized,一个没有。线程B可异步调用非synchronized类型方法 | ||
| 11 | + * 2.两个都有synchronized。线程B需等待 | ||
| 12 | + */ | ||
| 13 | + public class Run4_synchronized01 { | ||
| 14 | + public static void main(String[] args) { | ||
| 15 | + MyObject object = new MyObject(); | ||
| 16 | + ThreadA a = new ThreadA(object); | ||
| 17 | + a.setName("A"); | ||
| 18 | + ThreadB b = new ThreadB(object); | ||
| 19 | + b.setName("B"); | ||
| 20 | + a.start(); | ||
| 21 | + b.start(); | ||
| 22 | + } | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + /* | ||
| 26 | + public void methodB()没加synchronized | ||
| 27 | + 输出: | ||
| 28 | + begin methodA threadName=A | ||
| 29 | + begin methodB threadName=B | ||
| 30 | + A endTime:1460449260181 | ||
| 31 | + B endTime:1460449260181 | ||
| 32 | + | ||
| 33 | + ------------------- | ||
| 34 | + | ||
| 35 | + public void methodB()加synchronized | ||
| 36 | + 输出: | ||
| 37 | + begin methodA threadName=A | ||
| 38 | + A endTime:1460449301441 | ||
| 39 | + begin methodB threadName=B | ||
| 40 | + B endTime:1460449306441 | ||
| 41 | + | ||
| 42 | + | ||
| 43 | + */ | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example4; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + public class ThreadA extends Thread{ | ||
| 7 | + private MyObject object; | ||
| 8 | + public ThreadA(MyObject object){ | ||
| 9 | + super(); | ||
| 10 | + this.object = object; | ||
| 11 | + } | ||
| 12 | + | ||
| 13 | + @Override | ||
| 14 | + public void run() { | ||
| 15 | + super.run(); | ||
| 16 | + object.methodA(); | ||
| 17 | + } | ||
| 18 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + package com.brianway.learning.java.multithread.synchronize.example4; | ||
| 2 | + | ||
| 3 | + /** | ||
| 4 | + * Created by Brian on 2016/4/12. | ||
| 5 | + */ | ||
| 6 | + public class ThreadB extends Thread{ | ||
| 7 | + private MyObject object; | ||
| 8 | + public ThreadB(MyObject object){ | ||
| 9 | + super(); | ||
| 10 | + this.object = object; | ||
| 11 | + } | ||
| 12 | + | ||
| 13 | + @Override | ||
| 14 | + public void run() { | ||
| 15 | + super.run(); | ||
| 16 | + object.methodB(); | ||
| 17 | + } | ||
| 18 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments