|
| 1 | +<html> |
| 2 | +<head> |
| 3 | +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| 4 | +<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> |
| 5 | +<meta content="text/css" http-equiv="Content-Style-Type"> |
| 6 | +<title>MultiThreading</title> |
| 7 | +</head> |
| 8 | +<body> |
| 9 | +<h1 align="center" class="root"> |
| 10 | +<a name="2ai3aeb5qcgo8erk2l2b5mr40s">MultiThreading</a> |
| 11 | +</h1> |
| 12 | +<div align="center" class="globalOverview"> |
| 13 | +<img src="MultiThreading_files/images/MultiThreading.jpg"></div> |
| 14 | +<h2 class="topic"> |
| 15 | +<a name="1rvgo3r2hr9vpl5ju5cb6noetq">线程实现</a> |
| 16 | +</h2> |
| 17 | +<h3 class="topic"> |
| 18 | +<a name="2mlkal03j9di2g9i2638p9ndp3"> 匿名类</a> |
| 19 | +</h3> |
| 20 | +<h3 class="topic"> |
| 21 | +<a name="4cpogab0ua3da45qm7qgpqm2qg"> 实现Runnable接口</a> |
| 22 | +</h3> |
| 23 | +<h3 class="topic"> |
| 24 | +<a name="3888i0rgibs95b440h6mat3odf"> 继承Thread类</a> |
| 25 | +</h3> |
| 26 | +<h2 class="topic"> |
| 27 | +<a name="747qknu2ad2mjaenhq24uqihnp">volatile</a> |
| 28 | +</h2> |
| 29 | +<h3 class="topic"> |
| 30 | +<a name="3ksaq43i542o5qfkihgpjs0us8"> 该关键字修饰的字段 可以确保任何线程读取该字段时都是最近写入的值</a> |
| 31 | +</h3> |
| 32 | +<h2 class="topic"> |
| 33 | +<a name="1ghoddkod9q58bempq98fvv775">锁对象</a> |
| 34 | +</h2> |
| 35 | +<h3 class="topic"> |
| 36 | +<a name="28ktstsbtqim3gopd74b86062d"> 使用sychronized 多个方法时效率较低</a> |
| 37 | +</h3> |
| 38 | +<h3 class="topic"> |
| 39 | +<a name="1d509006v8v180eev9252nkmlc"> 使用lock对象 较sychronized效率高</a> |
| 40 | +</h3> |
| 41 | +<h3 class="topic"> |
| 42 | +<a name="1tgkhng6h88qf3b4tia7rtl8da"> ReentrantLocks</a> |
| 43 | +</h3> |
| 44 | +<h2 class="topic"> |
| 45 | +<a name="4qjpesabt4vhgoudrg8vuqfm93">线程池</a> |
| 46 | +</h2> |
| 47 | +<h3 class="topic"> |
| 48 | +<a name="541a4q8ubi56otjnlm8fpf0mqe"> JDK提供的线程池类</a> |
| 49 | +</h3> |
| 50 | +<h3 class="topic"> |
| 51 | +<a name="0f2in7esgohtqke29td5rtn5v5"> java.util.concurrent</a> |
| 52 | +</h3> |
| 53 | +<p class="topicImage"> |
| 54 | +<img height="223" src="MultiThreading_files/17dkbffcnmf1bo74p21iki0r09.png" width="400"></p> |
| 55 | +<h2 class="topic"> |
| 56 | +<a name="287ugbgl24fj5k57cut50sa0gc">countDownLatch</a> |
| 57 | +</h2> |
| 58 | +<h3 class="topic"> |
| 59 | +<a name="0k1lrkg5ofuras3jr8rf7c1dfi"> 多个线程共享一个CountDownLatch实例,直到CountDownLatch实例声明的次数减为0。</a> |
| 60 | +</h3> |
| 61 | +<h3 class="topic"> |
| 62 | +<a name="2ale8ed76qqnop8eeq6vlld5hv"> 典型例子是多个部门协同完成任务,Boss最后拍板</a> |
| 63 | +</h3> |
| 64 | +<h2 class="topic"> |
| 65 | +<a name="15i2l6fkh6aodkkb38aqudhpap">ProducerConsumer</a> |
| 66 | +</h2> |
| 67 | +<h3 class="topic"> |
| 68 | +<a name="4mbf867q163ipe87mg2vc98oab"> 使用BlockingQueue</a> |
| 69 | +</h3> |
| 70 | +<h3 class="topic"> |
| 71 | +<a name="24appi3vrd0ov77rhglsdbahmv"> BlockingQueue 线程安全</a> |
| 72 | +</h3> |
| 73 | +<h3 class="topic"> |
| 74 | +<a name="6kbj69k81jtm6g01f5meqaaled"> 常用方法</a> |
| 75 | +</h3> |
| 76 | +<h3 class="topic"> |
| 77 | +<a name="39ndd3mrr0hoqqn2ktu24ljf6r"> put</a> |
| 78 | +</h3> |
| 79 | +<h3 class="topic"> |
| 80 | +<a name="3enlr9v8f1pp61c1ctd6tfurup"> take</a> |
| 81 | +</h3> |
| 82 | +<h3 class="topic"> |
| 83 | +<a name="0kg99vjeo7bo6jnojor8v4e5ed"> 使用信号量</a> |
| 84 | +</h3> |
| 85 | +<h3 class="topic"> |
| 86 | +<a name="20q4h8iqsjgcpb2lblrj7lfvk5"> 单个信号量</a> |
| 87 | +</h3> |
| 88 | +<h3 class="topic"> |
| 89 | +<a name="7nfng5i860n26p28dkco8imv62"> 使用wait 和notify</a> |
| 90 | +</h3> |
| 91 | +<h3 class="topic"> |
| 92 | +<a name="4j8jie7gotnlvned4kitj7qrpm"> 使用锁对象的await 和 signal</a> |
| 93 | +</h3> |
| 94 | +<h3 class="topic"> |
| 95 | +<a name="0q88n5lj1prt6ib3e84l4bmdmk"> Semaphore 资源为1</a> |
| 96 | +</h3> |
| 97 | +<h3 class="topic"> |
| 98 | +<a name="1ol9vp2cqoao9efo83gci7qud6"> 多个信号量</a> |
| 99 | +</h3> |
| 100 | +<h3 class="topic"> |
| 101 | +<a name="62dacr4qr5tmupukgf00u3clol"> Semaphore</a> |
| 102 | +</h3> |
| 103 | +<h3 class="topic"> |
| 104 | +<a name="4uic3of5m5n2tqlrbvii8sqe9k"> acquire()</a> |
| 105 | +</h3> |
| 106 | +<h3 class="topic"> |
| 107 | +<a name="5c6bmmr8ui7ko7s13otsbmcg83"> release()</a> |
| 108 | +</h3> |
| 109 | +<h2 class="topic"> |
| 110 | +<a name="27j60mml1ffj7v863rpaulot2u">CallableAndFuture</a> |
| 111 | +</h2> |
| 112 | +<h3 class="topic"> |
| 113 | +<a name="49kuv2rv0b0njuu5jvp30cl083"> Callable</a> |
| 114 | +</h3> |
| 115 | +<h3 class="topic"> |
| 116 | +<a name="19is2tneudmsrmom7u0sfkgqt2"> Callable和Runnable的区别</a> |
| 117 | +</h3> |
| 118 | +<h3 class="topic"> |
| 119 | +<a name="5i3gc8dbbfqupfber2pp1nbp6j"> Runnable 引入在JDK1.0 Callable<T>引入在JDK1.5</a> |
| 120 | +</h3> |
| 121 | +<h3 class="topic"> |
| 122 | +<a name="3berchkiiddj9n48ihii00h4dj"> Callable 待参数回调可以和Future配合使用</a> |
| 123 | +</h3> |
| 124 | +<h3 class="topic"> |
| 125 | +<a name="11c182rmo4pcpoe4js7amjfc7k"> Future</a> |
| 126 | +</h3> |
| 127 | +<h3 class="topic"> |
| 128 | +<a name="19vvmn6akdg9gjnbji8vrqc76f"> Future允许你控制线程和查看线程状态</a> |
| 129 | +</h3> |
| 130 | +</body> |
| 131 | +</html> |
0 commit comments