Skip to content

Commit 9ac1efe

Browse files
committed
1. 完善重整并发文章
2. add CentOS7.x 用mwget工具来提升wget下载速度
1 parent d91d16a commit 9ac1efe

2 files changed

Lines changed: 50 additions & 47 deletions

File tree

2. Java基础/2.1 基础篇/2. 并发编程篇/10. Java并发编程-AQS.md

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,12 @@
2121

2222
##### getState
2323
```
24-
protected final int getState() {
25-
return state;
26-
}
24+
protected final int getState() {
25+
return state;
26+
}
2727
```
2828
返回同步状态的当前值。此操作具有 volatile 读的内存语义。
29-
返回:
30-
当前状态值
29+
3130

3231
##### setState
3332
```
@@ -42,80 +41,57 @@ newState - 新的状态值
4241

4342
##### compareAndSetState
4443
```
45-
protected final boolean compareAndSetState(int expect, int update) {
46-
// See below for intrinsics setup to support this
47-
return unsafe.compareAndSwapInt(this, stateOffset, expect, update);
48-
}
44+
protected final boolean compareAndSetState(int expect, int update) {
45+
// See below for intrinsics setup to support this
46+
return unsafe.compareAndSwapInt(this, stateOffset, expect, update);
47+
}
4948
```
5049
compareAndSwap即CAS,详细可查找[Java并发编程 -- Atomic包](https://www.jianshu.com/p/288bdd29ec06)文章。
5150
如果当前状态值等于预期值,则以原子方式将同步状态设置为给定的更新值。此操作具有 volatile 读和写的内存语义。
52-
###### 参数:
53-
expect - 预期值
54-
update - 新值
55-
###### 返回:
51+
5652
如果成功,则返回 true。返回 false 指示实际值与预期值不相等。
5753

5854

55+
5956
##### tryAcquire
6057
```
61-
protected boolean tryAcquire(int arg) {
62-
throw new UnsupportedOperationException();
63-
}
58+
protected boolean tryAcquire(int arg) {
59+
throw new UnsupportedOperationException();
60+
}
6461
```
6562
试图在独占模式下获取对象状态。此方法应该查询是否允许它在独占模式下获取对象状态,如果允许,则获取它。
6663

6764
此方法总是由执行 acquire 的线程来调用。如果此方法报告失败,则 acquire 方法可以将线程加入队列(如果还没有将它加入队列),直到获得其他某个线程释放了该线程的信号。可以用此方法来实现 lock.tryLock()方法。默认实现将抛出[UnsupportedOperationException](http://tool.oschina.net/uploads/apidocs/jdk-zh/java/lang/UnsupportedOperationException.html "java.lang 中的类")
68-
###### 参数:
69-
arg - acquire 参数。该值总是传递给 acquire 方法的那个值,或者是因某个条件等待而保存在条目上的值。该值是不间断的,并且可以表示任何内容。
70-
###### 返回:
65+
7166
如果成功,则返回 true。在成功的时候,此对象已经被获取。
72-
###### 抛出:
73-
[IllegalMonitorStateException](http://tool.oschina.net/uploads/apidocs/jdk-zh/java/lang/IllegalMonitorStateException.html "java.lang 中的类")- 如果正在进行的获取操作将在非法状态下放置此同步器。必须以一致的方式抛出此异常,以便同步正确运行。
74-
[UnsupportedOperationException](http://tool.oschina.net/uploads/apidocs/jdk-zh/java/lang/UnsupportedOperationException.html "java.lang 中的类")- 如果不支持独占模式
7567

7668
##### tryRelease
7769
```
78-
protected boolean tryRelease(int arg) {
79-
throw new UnsupportedOperationException();
80-
}
70+
protected boolean tryRelease(int arg) {
71+
throw new UnsupportedOperationException();
72+
}
8173
```
8274
试图设置状态来反映独占模式下的一个释放。
8375
此方法总是由正在执行释放的线程调用。
8476

8577
默认实现将抛出 UnsupportedOperationException。
8678

87-
###### 参数:
88-
arg - release 参数。该值总是传递给 release 方法的那个值,或者是因某个条件等待而保存在条目上的当前状态值。该值是不间断的,并且可以表示任何内容。
89-
###### 返回:
90-
如果此对象现在处于完全释放状态,从而使等待的线程都可以试图获得此对象,则返回 true;否则返回 false。
91-
###### 抛出:
92-
IllegalMonitorStateException - 如果正在进行的释放操作将在非法状态下放置此同步器。必须以一致的方式抛出此异常,以便同步正确运行。
93-
UnsupportedOperationException - 如果不支持独占模式
94-
9579
##### tryAcquireShared
9680
```
97-
protected int tryAcquireShared(int arg) {
98-
throw new UnsupportedOperationException();
99-
}
81+
protected int tryAcquireShared(int arg) {
82+
throw new UnsupportedOperationException();
83+
}
10084
```
10185
试图在共享模式下获取对象状态。此方法应该查询是否允许它在共享模式下获取对象状态,如果允许,则获取它。
10286
此方法总是由执行 acquire 线程来调用。如果此方法报告失败,则 acquire 方法可以将线程加入队列(如果还没有将它加入队列),直到获得其他某个线程释放了该线程的信号。
10387

10488
默认实现将抛出 UnsupportedOperationException。
10589

106-
参数:
107-
arg - acquire 参数。该值总是传递给 acquire 方法的那个值,或者是因某个条件等待而保存在条目上的值。该值是不间断的,并且可以表示任何内容。
108-
返回:
109-
在失败时返回负值;如果共享模式下的获取成功但其后续共享模式下的获取不能成功,则返回 0;如果共享模式下的获取成功并且其后续共享模式下的获取可能够成功,则返回正值,在这种情况下,后续等待线程必须检查可用性。(对三种返回值的支持使得此方法可以在只是有时候以独占方式获取对象的上下文中使用。)在成功的时候,此对象已被获取。
110-
抛出:
111-
IllegalMonitorStateException - 如果正在进行的获取操作将在非法状态下放置此同步器。必须以一致的方式抛出此异常,以便同步正确运行。
112-
UnsupportedOperationException - 如果不支持共享模式
113-
11490
##### tryReleaseShared
11591
```
116-
protected boolean tryReleaseShared(int arg) {
117-
throw new UnsupportedOperationException();
118-
}
92+
protected boolean tryReleaseShared(int arg) {
93+
throw new UnsupportedOperationException();
94+
}
11995
```
12096
试图设置状态来反映共享模式下的一个释放。
12197
此方法总是由正在执行释放的线程调用。
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
>mwget是一个多线程实现wget的一个工具。
2+
3+
### 1. 安装
4+
```
5+
wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
6+
# 安装bzip2压缩工具
7+
yum install bzip2
8+
# 安装c++
9+
yum install gcc-c++
10+
11+
# 解压
12+
tar -jxvf mwget_0.1.0.orig.tar.bz2 ./
13+
14+
cd mwget_0.1.0.orig
15+
16+
./configure
17+
18+
make&make install
19+
```
20+
### 2. 使用
21+
22+
```
23+
将wget命令改成mwget
24+
```
25+
26+
### 3. 效果
27+
![image.png](https://upload-images.jianshu.io/upload_images/5786888-8647b6cce0a1b190.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

0 commit comments

Comments
 (0)