学习路径决定学习效果!
有时候很多看似复杂的知识,其实并没有多复杂,只不过你找到的那份资料把知识讲复杂了。为什么这么说呢?
学习知识可以想象成是一个从开头接触到结尾把知识吸纳的过程,在这个过程中会有一些知识路径行走经历。那么不同的资料就是带着你在走这条知识路径,只不过有些资料容易绕路或者难走(路也跟车有关系,有些路适合客车、有些路适合轿车)。而当你找到一份非常不错并且适合自己的资料时,就会有一种酣畅、通透的感觉,不会感觉学起来多复杂,同时不仅学会了也理解了核心本质。这份资料在你手里就是,车速有点快、系好安全带
所以,能找到最好的资料也是学习过程中,非常重要的一个点。你的检索能力越强,你就会越容易找到最合适你的资料。
接下来小傅哥就带你进入鹿鼎记 · 韦小宝的多线程和锁的故事路线,感受逗B的学习路线!
图 12-1 鹿鼎记·韦小宝,多线程恶搞例子
小傅哥选取了五个鹿鼎记场景,融入进去不同的多线程使用,包括:丽春院,说书、天地会,香主、招收杂役,入宫、皇上、建宁,比武、七个老婆,隐居,这样五个场景。相信你看完后,一定会记住每个线程的使用!
public class SynchronizedTest {
private static ExecutorService 丽春院 = Executors.newFixedThreadPool(10);
private static volatile boolean 老鸨 = false;
public static class 客官 implements Runnable {
private String 姓名;
public 客官(String 姓名) {
this.姓名 = 姓名;
}
@Override
public void run(){
try {
清倌(姓名);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static synchronized void 清倌(String 姓名) throws InterruptedException {
while (true){
System.out.println("韦春花与" + 姓名 + "喝茶、吟诗、做对、聊风月!");
if (老鸨){
System.out.println("老鸨敲门:时间到啦!\r\n");
老鸨 = false;
break;
}
Thread.sleep(1000);
}
}
private static Listlist = Arrays.asList("鳌大人", "陈近南", "海大富");
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 3; i++) {
丽春院.execute(new 客官(list.get(i)));
Thread.sleep(3000);
老鸨 = true;
}
}
}
韦春花与鳌大人喝茶、吟诗、做对、聊风月!
韦春花与鳌大人喝茶、吟诗、做对、聊风月!
韦春花与鳌大人喝茶、吟诗、做对、聊风月!
韦春花与鳌大人喝茶、吟诗、做对、聊风月!
老鸨敲门:时间到啦!
韦春花与陈近南喝茶、吟诗、做对、聊风月!
韦春花与陈近南喝茶、吟诗、做对、聊风月!
韦春花与陈近南喝茶、吟诗、做对、聊风月!
韦春花与陈近南喝茶、吟诗、做对、聊风月!
老鸨敲门:时间到啦!
韦春花与海大富喝茶、吟诗、做对、聊风月!
韦春花与海大富喝茶、吟诗、做对、聊风月!
韦春花与海大富喝茶、吟诗、做对、聊风月!
韦春花与海大富喝茶、吟诗、做对、聊风月!
老鸨敲门:时间到啦!
图 12-3 天地会,香主
public class CountDownLatchTest {
public static void main(String[] args) throws InterruptedException {
Listlist = Arrays.asList("总舵主,陈近南", "莲花堂香主,蔡德忠",
"洪顺堂香主,方大洪",
"家后堂香主,马超兴",
"参太堂香主,胡德帝",
"宏化堂香主,李式开",
"青木堂香主,韦小宝",
"赤火堂香主,古至中",
"玄水堂香主,林永超",
"黄土堂香主,姚必达");
CountDownLatch latch = new CountDownLatch(10);
ExecutorService exec = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
int idx = i;
exec.execute(() -> {
try {
System.out.println("天地会核心十堂核心成员,高层会议,成员:" + list.get(idx) + " 入场");
Thread.sleep(3000);
} catch (Exception ignore) {
} finally {
latch.countDown();
}
});
}
latch.await();
System.out.println("天地会,核心成员到齐。开会讨论谁入宫,偷取四十二章经!「内定韦香主」");
exec.shutdown();
}
}
天地会核心十堂核心成员,高层会议,成员:总舵主,陈近南 入场
天地会核心十堂核心成员,高层会议,成员:莲花堂香主,蔡德忠 入场
天地会核心十堂核心成员,高层会议,成员:洪顺堂香主,方大洪 入场
天地会核心十堂核心成员,高层会议,成员:家后堂香主,马超兴 入场
天地会核心十堂核心成员,高层会议,成员:参太堂香主,胡德帝 入场
天地会核心十堂核心成员,高层会议,成员:宏化堂香主,李式开 入场
天地会核心十堂核心成员,高层会议,成员:青木堂香主,韦小宝 入场
天地会核心十堂核心成员,高层会议,成员:赤火堂香主,古至中 入场
天地会核心十堂核心成员,高层会议,成员:玄水堂香主,林永超 入场
天地会核心十堂核心成员,高层会议,成员:黄土堂香主,姚必达 入场
天地会,核心成员到齐。开会讨论谁入宫,偷取四十二章经!「内定韦香主」
图 12-4 招收杂役,入宫
public class ReentrantLockTest {
private static ReentrantLock lock = new ReentrantLock(true);
private static Listlist = Arrays.asList("路人甲", "路人乙", "路人丙", "路人丁", "路人戊", "路人己", "路人庚", "路人壬", "路人癸", "韦小宝");
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int idx = i;
new Thread(() -> {
try {
招收杂役(list.get(idx));
} catch (InterruptedException ignore) {
}
}).start();
if (idx == 9) {
new Thread(() -> {
招收太监(list.get(idx));
}).start();
}
}
}
public static void 招收杂役(String name) throws InterruptedException {
lock.lock();
try {
while (true) {
System.out.println(name + ",排队等待进宫当杂役...");
Thread.sleep(1000);
}
} finally {
lock.unlock();
}
}
public static void 招收太监(String name) {
System.out.println(name + ",进宫当太监,不用排队!");
}
}
路人甲,排队等待进宫当杂役...
韦小宝,进宫当太监,不用排队!
路人甲,排队等待进宫当杂役...
路人甲,排队等待进宫当杂役...
路人甲,排队等待进宫当杂役...
路人甲,排队等待进宫当杂役...
路人甲,排队等待进宫当杂役...
图 12-5 皇上、建宁,比武
public class ReentrantReadWriteLockTest {
private static final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private static final Lock readLock = readWriteLock.readLock();
private static final Lock writeLock = readWriteLock.writeLock();
private static Dequedeque = new ArrayDeque<>();
public static String get() {
readLock.lock();
try {
return deque.poll();
} finally {
readLock.unlock();
}
}
public static void put(String value) {
writeLock.lock();
try {
deque.add(value);
} finally {
writeLock.unlock();
}
}
public static void main(String[] args) {
new Thread(() -> {
while (true) {
put("小擒拿");
put("抓乃龙抓手");
put("下脚绊");
put("大别子");
put("锁喉");
put("扣眼珠子");
try {
Thread.sleep(3000);
} catch (InterruptedException ignore) {
}
}
}).start();
new Thread(() -> {
while (true) {
System.out.println("韦小宝与皇上比武出招:" + get());
try {
Thread.sleep(500);
} catch (InterruptedException ignore) {
}
}
}).start();
}
}
韦小宝与皇上比武出招:小擒拿
韦小宝与皇上比武出招:抓乃龙抓手
韦小宝与皇上比武出招:下脚绊
韦小宝与皇上比武出招:大别子
韦小宝与皇上比武出招:锁喉
韦小宝与皇上比武出招:扣眼珠子
韦小宝与皇上比武出招:小擒拿
韦小宝与皇上比武出招:抓乃龙抓手
韦小宝与皇上比武出招:下脚绊
韦小宝与皇上比武出招:大别子
韦小宝与皇上比武出招:锁喉
韦小宝与皇上比武出招:扣眼珠子
韦小宝与皇上比武出招:小擒拿
韦小宝与皇上比武出招:抓乃龙抓手
韦小宝与皇上比武出招:下脚绊
韦小宝与皇上比武出招:大别子
韦小宝与皇上比武出招:锁喉
图 12-6 七个老婆,隐居
public class SemaphoreTest {
public static void main(String[] args){
Listlist = new ArrayList<>();
list.add("韦小宝");
list.add("阿珂");
list.add("双儿");
list.add("曾柔");
list.add("建宁公主");
list.add("沐建屏");
list.add("方怡");
list.add("苏荃");
Semaphore semaphore = new Semaphore(4, true);
for (int i = 0; i < 8; i++) {
new Thread(() -> {
try {
semaphore.acquire();
String user = list.remove(new Random().nextInt(list.size()));
System.out.println("韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:" + user);
Thread.sleep(3000L);
} catch (InterruptedException ignore) {
} finally {
semaphore.release();
}
}).start();
}
}
}
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:曾柔
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:苏荃
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:双儿
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:阿珂
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:方怡
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:韦小宝
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:建宁公主
韦小宝带着七个老婆,过着桃园生活。每天打打麻将、练练武术。麻将四人桌:沐建屏
新闻名称:鹿鼎记·韦小宝,结合电视剧情讲解Java多线程
本文来源:http://www.shufengxianlan.com/qtweb/news11/313111.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联