| 1 |
| 00:00:05,000 --> 00:00:06,000 |
| Hello. |
|
|
| 2 |
| 00:00:06,000 --> 00:00:10,000 |
| And this week, we're going to review tasks for multithreaded topic. |
|
|
| 3 |
| 00:00:10,000 --> 00:00:16,000 |
| Now you have enough knowledge to deal with them and even more by this moment, we've learned so many |
|
|
| 4 |
| 00:00:16,000 --> 00:00:19,000 |
| things that you can solve the same tasks with multiple ways. |
|
|
| 5 |
| 00:00:20,000 --> 00:00:26,000 |
| For example, you can solve synchronization task with synchronized Massud, synchronized Bloks Locks |
|
|
| 6 |
| 00:00:26,000 --> 00:00:27,000 |
| or Synchronizer. |
|
|
| 7 |
| 00:00:27,000 --> 00:00:29,000 |
| And let's review tasks first. |
|
|
| 8 |
| 00:00:29,000 --> 00:00:33,000 |
| And after that I will tell you where you can find solution for these tasks in order. |
|
|
| 9 |
| 00:00:33,000 --> 00:00:35,000 |
| You could check a solution later. |
|
|
| 10 |
| 00:00:36,000 --> 00:00:43,000 |
| So in this file, you can find all home tasks that I recommend to implement to make sure you have enough |
|
|
| 11 |
| 00:00:43,000 --> 00:00:44,000 |
| skills in most certain programming. |
|
|
| 12 |
| 00:00:45,000 --> 00:00:50,000 |
| We are going to start from the super simple and gradually come to more complex tasks. |
|
|
| 13 |
| 00:00:50,000 --> 00:00:56,000 |
| You can find the reference to this file in attachments to the lesson that's reviewed these tasks together, |
|
|
| 14 |
| 00:00:56,000 --> 00:00:58,000 |
| and I will give my comments as we go. |
|
|
| 15 |
| 00:00:59,000 --> 00:01:01,000 |
| The first task is simple one. |
|
|
| 16 |
| 00:01:01,000 --> 00:01:07,000 |
| And just to practice your skills in creating stress in different ways and being able to interrupt threats, |
|
|
| 17 |
| 00:01:07,000 --> 00:01:14,000 |
| it is recommended to create and start a threat in four different ways by implementing runnable interface, |
|
|
| 18 |
| 00:01:14,000 --> 00:01:20,000 |
| by extending from STREAT class, bypassing the function to constructor of the class and bypassing the |
|
|
| 19 |
| 00:01:20,000 --> 00:01:24,000 |
| master reference during the threat objects instantiation. |
|
|
| 20 |
| 00:01:24,000 --> 00:01:30,000 |
| All of these ways were revealed in this course, so don't hesitate to navigate between the lessons to |
|
|
| 21 |
| 00:01:30,000 --> 00:01:31,000 |
| find the answer to this question. |
|
|
| 22 |
| 00:01:32,000 --> 00:01:37,000 |
| The next task is a little bit more complex than the first one, but still, I'm sure it will be easy |
|
|
| 23 |
| 00:01:37,000 --> 00:01:39,000 |
| for you to implement. |
|
|
| 24 |
| 00:01:39,000 --> 00:01:45,000 |
| You need to create some type that will spam messages with a specified interval of time. |
|
|
| 25 |
| 00:01:45,000 --> 00:01:51,000 |
| And also you need to implement logic of threat interruption after enter key press. |
|
|
| 26 |
| 00:01:51,000 --> 00:01:53,000 |
| I can give a hint you're here. |
|
|
| 27 |
| 00:01:53,000 --> 00:02:00,000 |
| You can try to implement this logic by creating a separate demon threat that would constantly listen |
|
|
| 28 |
| 00:02:00,000 --> 00:02:01,000 |
| for new line character. |
|
|
| 29 |
| 00:02:01,000 --> 00:02:07,000 |
| Zitter similar to press and enter during the program execution and once new line character is received, |
|
|
| 30 |
| 00:02:07,000 --> 00:02:10,000 |
| we interrupt this bomb threat. |
|
|
| 31 |
| 00:02:10,000 --> 00:02:16,000 |
| Besides the knowledge of mooches threat, this task also and needs knowledge of input output streams |
|
|
| 32 |
| 00:02:16,000 --> 00:02:17,000 |
| in Java. |
|
|
| 33 |
| 00:02:17,000 --> 00:02:24,000 |
| In case you have never worked with AI streams, please watch my Java course, namely section about inputs |
|
|
| 34 |
| 00:02:24,000 --> 00:02:25,000 |
| and outputs streams in Java. |
|
|
| 35 |
| 00:02:26,000 --> 00:02:33,000 |
| The shared task is already about synchronization similar to the ones that we have reviewed in lessons, |
|
|
| 36 |
| 00:02:33,000 --> 00:02:39,000 |
| but again seen task solution in the lesson and trying to implement it by itself. |
|
|
| 37 |
| 00:02:39,000 --> 00:02:40,000 |
| It is different things. |
|
|
| 38 |
| 00:02:40,000 --> 00:02:46,000 |
| So try to implement this task and understand better how SYNCHRONIZE Block works. |
|
|
| 39 |
| 00:02:47,000 --> 00:02:54,000 |
| Task number four is a little bit more complex and sure, you have to find a maximum number in multidimensional |
|
|
| 40 |
| 00:02:54,000 --> 00:02:54,000 |
| array. |
|
|
| 41 |
| 00:02:55,000 --> 00:03:01,000 |
| It is recommended to create Israelian solution and single resolution in order you could see the benefits |
|
|
| 42 |
| 00:03:01,000 --> 00:03:03,000 |
| of concurrent compute. |
|
|
| 43 |
| 00:03:03,000 --> 00:03:08,000 |
| And also I recommend to solve this task twice in order to practice different things. |
|
|
| 44 |
| 00:03:09,000 --> 00:03:15,000 |
| The first variant will be implementation was callable and future objects and the second variant will |
|
|
| 45 |
| 00:03:15,000 --> 00:03:16,000 |
| be implementation. |
|
|
| 46 |
| 00:03:16,000 --> 00:03:18,000 |
| With Countdown Lache Object. |
|
|
| 47 |
| 00:03:18,000 --> 00:03:24,000 |
| Implementing this task force two different ways will let you understand how these two solutions are |
|
|
| 48 |
| 00:03:24,000 --> 00:03:24,000 |
| different. |
|
|
| 49 |
| 00:03:24,000 --> 00:03:27,000 |
| And what would you prefer to use in your projects? |
|
|
| 50 |
| 00:03:27,000 --> 00:03:29,000 |
| And the last but not the least task. |
|
|
| 51 |
| 00:03:29,000 --> 00:03:33,000 |
| Number five, the standard task about writers and readers. |
|
|
| 52 |
| 00:03:33,000 --> 00:03:39,000 |
| Few students of mine has been asked to implement task and board readers and writers during the interviews. |
|
|
| 53 |
| 00:03:39,000 --> 00:03:42,000 |
| This proves that this kind of tasks are popular. |
|
|
| 54 |
| 00:03:42,000 --> 00:03:48,000 |
| During the interviews you have to implement reader and writer type and create objects of these types |
|
|
| 55 |
| 00:03:48,000 --> 00:03:49,000 |
| that would work together. |
|
|
| 56 |
| 00:03:50,000 --> 00:03:53,000 |
| Writer writes to the buffer readers read from above. |
|
|
| 57 |
| 00:03:54,000 --> 00:03:55,000 |
| Everything is simple. |
|
|
| 58 |
| 00:03:55,000 --> 00:03:57,000 |
| In the case there is nothing in Buffer. |
|
|
| 59 |
| 00:03:57,000 --> 00:04:03,000 |
| Something should be written there in case Buffer is full, massages should be consumed. |
|
|
| 60 |
| 00:04:03,000 --> 00:04:08,000 |
| There are some specific conditions that I would like you to implement in your solution. |
|
|
| 61 |
| 00:04:08,000 --> 00:04:12,000 |
| For example, limit your demo with three cycles of writing and reading. |
|
|
| 62 |
| 00:04:13,000 --> 00:04:15,000 |
| Limit your demo to three readers and one writer. |
|
|
| 63 |
| 00:04:15,000 --> 00:04:20,000 |
| Only total duration of the program execution should not be longer than two seconds. |
|
|
| 64 |
| 00:04:21,000 --> 00:04:22,000 |
| This check is also important. |
|
|
| 65 |
| 00:04:22,000 --> 00:04:29,000 |
| In order you do not build logical thread synchronization, only using stress loops similar to the previous |
|
|
| 66 |
| 00:04:29,000 --> 00:04:29,000 |
| task. |
|
|
| 67 |
| 00:04:29,000 --> 00:04:32,000 |
| I'd like to ask you to implement this task in two different ways. |
|
|
| 68 |
| 00:04:33,000 --> 00:04:38,000 |
| The first option is implementation with dummy object that will be used as monitor to synchronize all |
|
|
| 69 |
| 00:04:38,000 --> 00:04:38,000 |
| threads. |
|
|
| 70 |
| 00:04:39,000 --> 00:04:45,000 |
| Also, you can practice in using weight, modify and modify all methods and the second option is implementation. |
|
|
| 71 |
| 00:04:45,000 --> 00:04:52,000 |
| With the API, it would be just perfect for you to understand how to use logs in places where we use |
|
|
| 72 |
| 00:04:52,000 --> 00:04:54,000 |
| synchronize blocks and how flexible they are. |
|
|
| 73 |
| 00:04:55,000 --> 00:04:58,000 |
| The reference to the source code of the solution to these tasks. |
|
|
| 74 |
| 00:04:58,000 --> 00:05:02,000 |
| You can also find in attachments to the lesson in. |
|
|
| 75 |
| 00:05:02,000 --> 00:05:08,000 |
| If you already pulled my cloning project, you can find all solutions and different versions of solutions |
|
|
| 76 |
| 00:05:08,000 --> 00:05:14,000 |
| in the multiscreen package in Homburg package, all tasks have no in their name. |
|
|
| 77 |
| 00:05:15,000 --> 00:05:20,000 |
| So I'm sure it would be easy for you to navigate between them, but try to solve tasks and buy yourself |
|
|
| 78 |
| 00:05:20,000 --> 00:05:21,000 |
| first. |
|
|
| 79 |
| 00:05:21,000 --> 00:05:27,000 |
| And after that, look at the solution in case for some reasons it is hard for you to solve some task. |
|
|
| 80 |
| 00:05:27,000 --> 00:05:30,000 |
| Try to watch less than about a specific topic one more time. |
|
|
| 81 |
| 00:05:31,000 --> 00:05:35,000 |
| If this still doesn't help, try to look at a solution and rewrite it. |
|
|
| 82 |
| 00:05:35,000 --> 00:05:42,000 |
| As you understood, the things that I am trying to achieve is that you're trying to understand the solution, |
|
|
| 83 |
| 00:05:42,000 --> 00:05:43,000 |
| but not just do it. |
|
|
| 84 |
| 00:05:44,000 --> 00:05:48,000 |
| And remember, you are going to make a mistakes and that is fine. |
|
|
| 85 |
| 00:05:48,000 --> 00:05:50,000 |
| Not learning from that mistakes. |
|
|
| 86 |
| 00:05:50,000 --> 00:05:52,000 |
| It is the biggest mistake. |
|
|
| 87 |
| 00:05:53,000 --> 00:05:54,000 |
| These are all tasks. |
|
|
| 88 |
| 00:05:55,000 --> 00:05:57,000 |
| You are more than welcome to ask questions. |
|
|
| 89 |
| 00:05:57,000 --> 00:05:59,000 |
| And as a beginner, in case of any. |
|
|
| 90 |
| 00:05:59,000 --> 00:06:00,000 |
| That's it. |
|
|
| 91 |
| 00:06:00,000 --> 00:06:03,000 |
| Thank you for your attention and see you in the next Larsons. |
|
|
|
|