促销活动
CodeGym University
学习
课程
任务
调查和小测验
游戏
帮助
提醒时间表
社区
用户
论坛
聊天
文章
成功故事
活动
评论
订阅服务
浅色主题
课程
评论
关于我们
开始
开始学习
立即开始学习
目标地图
课程
Java 多线程
级别 7
您已达到 27 级
Java 多线程
第 7 级,
课程 0
27级
循环(中断和返回、继续、标签)
Java 多线程
第 7 级,
课程 1
“嗨,阿米戈!” “今天我会告诉你一些在使用循环时很方便的事情。” “第一个是关键字break。如果你在循环体中使用这个命令,那么循环将在命令执行时立即终止。这是一个例子:” 例子 输出: for (int i = 0; i < 10; i++)
练习使用 break 和 continue
Java 多线程
第 7 级,
课程 2
“嗨,阿米戈!”
死锁及其原因
Java 多线程
第 7 级,
课程 3
“嗨,阿米戈!” “今天我要告诉你什么是死锁。” “嘿,你已经和我说过类似的事情了。” “是的,我做到了。但今天我们将更详细地考虑这个话题。” “在最简单的情况下,死锁涉及两个线程和两个互斥对象。互锁发生在:” A)每个线程都需要获取两个互斥量。 B) 第一个线程已经获取了第一个互斥锁,正在等待第二个互斥锁被释放。 C) 第二个线程已经获得了第二个互斥锁,正在等待第一个互斥锁被释放。 “这里有些例子: 例子 public class Student
练习编写自己的死锁
Java 多线程
第 7 级,
课程 4
“嗨,阿米戈!”
避免死锁的策略
Java 多线程
第 7 级,
课程 5
“嗨,阿米戈!” “我想告诉你一些避免死锁的策略。” “最好的策略是一个深思熟虑的架构和一组规则来管理你何时以及以什么顺序使用锁(获取互斥体)。解决这个问题的经典方法是开发一个锁层次结构并建立某些锁永远不能被使用的规则在已经获得某些其他锁的状态下获得。” “比如,有时候锁是分级别的,要求一个线程按照从高级别到低级别的顺序去获取锁(但是不允许反方向获取锁)。另外,获取多个同级别的锁也是不可以的允许。” “例如,在前面的骑士示例中,我们可以为每个骑士添加一个唯一编号 (id),并
练习修复死锁
Java 多线程
第 7 级,
课程 6
“嗨,阿米戈!”
“wait-notify-notifyAll”策略
Java 多线程
第 7 级,
课程 7
“嗨,阿米戈!” “我想和你深入探讨 wait-notify。wait-notify 方法为线程交互提供了一种方便的机制。它们还可以用于构建复杂的线程交互高级机制。” “我将从一个小例子开始。假设我们有一个服务器程序,必须执行用户通过网站创建的各种任务。用户可以在不同时间添加各种任务。任务是资源密集型的,但我们服务器的 8 -核心处理器可以应付。我们应该如何在服务器上执行任务?” “首先,我们将创建一组工作线程,与处理器内核的数量一样多。每个线程都能够在自己的内核上运行:线程
一些细微差别
Java 多线程
第 7 级,
课程 8
“嗨,阿米戈!” “还有更多细节。我们称之为实用建议。” “假设你有一个等待某事并进入睡眠状态直到满足条件的方法。” 如果集合为空,那么我们等待 public synchronized Runnable getJob()
练习“wait-notify-notifyAll”
Java 多线程
第 7 级,
课程 9
“嗨,阿米戈!”
有关同步和多线程的其他详细信息
Java 多线程
第 7 级,
课程 10
“嗨,阿米戈!” “有一个很大的话题——Java 内存模型。基本上,您还不必了解它,但了解它会很有帮助。” “为了消除所有潜在的问题,Java 改变了它的内存管理机制。现在内存不再简单地分为线程的本地缓存和全局内存——这种机制甚至更好。” “而且更复杂!” “是的,更好,更复杂。就像飞机。坐飞机比走路好,但更复杂。我会尽量简单地解释新情况。” “这就是他们想出的。一种用于同步本地线程内存的机制,称为‘happens-before’,被添加到代码中。发明了几个规则/条件。当满足
学习谷歌。(如何使用掩码获取文件列表)
Java 多线程
第 7 级,
课程 11
“嗨,阿米戈!” “让我们继续学习如何使用谷歌搜索。” “这里有一些练习:” 网络搜索练习: 1个 goto 语句有什么不好? 2个 Java中的保留字是什么? 3个 如果我在同步块之外调用 wait 会发生什么? 4个 什么是“先发生”关系? 5个 BlockingQueue 接口的用途和方法? 6个 如何从控制台编译 java 文件? 7 如何从控制台运行 java 文件? 8个 如何从控制台启动包含多个编译文件的程序? 9 如何创建包含子目录的目录,例如 doc/rel
显示更多
1
2
Please enable JavaScript to continue using this application.