用户工具

站点工具


分享:技术:多线程:多线程编程核心技术整理

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
分享:技术:多线程:多线程编程核心技术整理 [2016/06/19 16:04]
gxx
分享:技术:多线程:多线程编程核心技术整理 [2016/06/19 18:16] (当前版本)
gxx
行 1658: 行 1658:
 [线程B]methodB结束 [线程B]methodB结束
 </​code>​ </​code>​
-=== synchronized锁重入 ===+=== synchronized锁重入与异常释放锁 ​===
   * 当前类中不同synchronized方法可以锁重入   * 当前类中不同synchronized方法可以锁重入
   * 父子类中不同synchronized方法可以锁重入   * 父子类中不同synchronized方法可以锁重入
行 1817: 行 1817:
  at com.gxx.threads.study.test21.MethodProcess.methodA(MethodProcess.java:​13)  at com.gxx.threads.study.test21.MethodProcess.methodA(MethodProcess.java:​13)
  at com.gxx.threads.study.test21.MyThread.run(MyThread.java:​28)  at com.gxx.threads.study.test21.MyThread.run(MyThread.java:​28)
 +</​code>​
 +=== 同步不具有继承性 ===
 +<code java MethodProcess.java>​
 +package com.gxx.threads.study.test22;​
 +
 +/** 
 + * 方法处理器
 + * @author Gxx
 + */
 +public class MethodProcess extends MethodProcessParent {
 + /**
 + * 处理
 + */
 + public void process(){
 + System.out.println("​["​ + Thread.currentThread().getName() + "​]进入process~"​);​
 + try {
 + Thread.sleep(2000);​
 + } catch (InterruptedException e) {
 + e.printStackTrace();​
 + }
 + System.out.println("​["​ + Thread.currentThread().getName() + "​]process结束"​);​
 + }
 +}
 +</​code>​
 +<code java MethodProcessParent.java>​
 +package com.gxx.threads.study.test22;​
 +
 +/** 
 + * 方法处理器
 + * @author Gxx
 + */
 +public class MethodProcessParent {
 + /**
 + * 处理
 + */
 + public synchronized void process(){
 + System.out.println("​["​ + Thread.currentThread().getName() + "​]进入process~"​);​
 + try {
 + Thread.sleep(2000);​
 + } catch (InterruptedException e) {
 + e.printStackTrace();​
 + }
 + System.out.println("​["​ + Thread.currentThread().getName() + "​]process结束"​);​
 + }
 +}
 +</​code>​
 +<code java MyThead.java>​
 +package com.gxx.threads.study.test22;​
 +
 +/** 
 + * 自定义线程类
 + * @author Gxx
 + */
 +public class MyThread extends Thread {
 + /**
 + * 方法处理器
 + */
 + MethodProcess methodProcess;​
 +
 + /**
 + * 构造方法
 + * @param name
 + * @param methodProcess
 + */
 + public MyThread(String name, MethodProcess methodProcess) {
 + this.setName(name);​
 + this.methodProcess = methodProcess;​
 + }
 +
 + /**
 + * 覆盖run方法
 + */
 + @Override
 + public void run() {
 + methodProcess.process();​
 + }
 +}
 +</​code>​
 +<code java Test.java>​
 +package com.gxx.threads.study.test22;​
 +
 +/**
 + * 测试类-测试同步不具有继承性
 + * @author Gxx
 + */
 +public class Test {
 + /**
 + * main方法
 + * @param args
 + */
 + public static void main(String[] args) {
 + System.out.println("​main 开始"​);​
 + MethodProcess methodProcess = new MethodProcess();​
 + MyThread threadA = new MyThread("​线程A",​ methodProcess);​
 + MyThread threadB = new MyThread("​线程B",​ methodProcess);​
 + threadA.start();​
 + threadB.start();​
 + System.out.println("​main 结束"​);​
 + }
 +}
 +</​code>​
 +输出
 +<​code>​
 +main 开始
 +main 结束
 +[线程B]进入process~
 +[线程A]进入process~
 +[线程B]process结束
 +[线程A]process结束
 </​code>​ </​code>​
分享/技术/多线程/多线程编程核心技术整理.1466323461.txt.gz · 最后更改: 2016/06/19 16:04 由 gxx