//********************************************************************* public class Main{ public static void main(String[] args) throws InterruptedException{ /* thread = A thread of execution in a program (kind of like a virtual CPU) The JVM allows an application to have multiple threads running concurrently Each thread can execute parts of you code in parallel with the main thread Each thread has a priority. Threads with higher priority are executed in preference compared to threads with a lower priority The Java Virtual Machine continues to execute threads until either of the following occurs 1. The exit method of class Runtime has been called 2. All user threads have died When a JVM starts up, there is a thread which calls the main method This thread is called “main” Daemon thread is a low priority thread that runs in background to perform tasks such as garbage collection JVM terminates itself when all user threads (non-daemon threads) finish their execution */ //System.out.println(Thread.activeCount()); //Thread.currentThread().setName("MAIN"); //System.out.println(Thread.currentThread().getName()); //Thread.currentThread().setPriority(10); //System.out.println(Thread.currentThread().getPriority()); //System.out.println(Thread.currentThread().isAlive()); /* for(int i =3;i>0;i--) { System.out.println(i); Thread.sleep(1000); } System.out.println("You are done!"); */ //MyThread thread2 = new MyThread(); //thread2.setDaemon(true); //System.out.println(thread2.isDaemon()); //thread2.start(); //System.out.println(thread2.isAlive()); //thread2.setName("2nd thread"); //System.out.println(thread2.getName()); //thread2.setPriority(1); //System.out.println(thread2.getPriority()); //System.out.println(Thread.activeCount()); } } //********************************************************************* public class MyThread extends Thread{ @Override public void run() { if(this.isDaemon()) { System.out.println("This is a daemon thread that is running"); } else { System.out.println("This is a user thread that is running"); } } } //*********************************************************************
@aquate9637
4 жыл бұрын
You should create a website and post your code there, I think people would really appreciate it.
@nikolamarkovic9906
2 жыл бұрын
Ched
@spicynoodles3317
2 жыл бұрын
Bro Code, please know you're out here saving lives, tears, grades, and reputations. I'm in an internship doing java programming and you're about 95% of the reason I've only cried once.
@yusuphmwaigomole3104
Жыл бұрын
Fantastic
@joyceasante8292
Жыл бұрын
Practicing... public class Main { public static void main (String[]args) throws InterruptedException { //System.out.println(Thread.activeCount()); //Thread.currentThread().setName("Main"); //System.out.println(Thread.currentThread().getName()); //Thread.currentThread().setPriority(1); //System.out.println(Thread.currentThread().getPriority()); //System.out.println(Thread.currentThread().isAlive()); /*for (int i = 8; i > 0; i--) { System.out.println (i); Thread.sleep (2000); } System.out.println("Done!"); */ MyThread thread2 = new MyThread(); thread2.setDaemon(true); System.out.println(thread2.isDaemon()); thread2.start(); //System.out.println(thread2.isAlive()); //thread2.setName("Thread II"); //System.out.println(thread2.getName()); //thread2.setPriority(1); //System.out.println(thread2.getPriority()); System.out.println(Thread.activeCount()); } } ************ public class MyThread extends Thread{ @Override public void run(){ if(this.isDaemon()){ System.out.println("Daemon thread is confirmed."); } else{ System.out.println("User thread is running."); } } }
@matthewbrightman33982 жыл бұрын
Hey man! Last summer I spent my vacation in Florida watching your channel; wrote a cool game. This summer I'm on assignment in Germany, and I'm back to watching your channel again. You have the perfect way of teaching Java! 10-15 minutes, examples, fun. Just great.
@chsktricks9397
Жыл бұрын
Hey! Hi matthew
@scotch5094
3 ай бұрын
which course did he teach about game bro
@SpeaksYourWord
2 ай бұрын
@@scotch5094 He only has beginner courses unfortunately but it would be great if he made advanced ones even if paid.
@IdeeFixeGamer3 жыл бұрын
pure gold, these tutorials are genius. more tutorials please
@joelcruz2873 Жыл бұрын
This was very useful after spending a couple days learning the basics of threads. If I began everything with watching this video, I wouldn't have known what was going on
@nizarouertani13153 жыл бұрын
by far the best java youtube channel
@nawfalnjm56993 жыл бұрын
your playlists are amazing . thank you !
@screenname96 Жыл бұрын
I love your channel, thank you so much. You make things so concise. I come to your channel for every topic in my Java class and view the videos on it before going through my professors provided resources. It helps me tremendously. Bless you, my guy.
@affable.pebbleАй бұрын
Thank you! I appreciate all the explanations and examples!
@srujansanga26899 ай бұрын
this teaching saved me one day of exercising on pdfs about threads
@LostKitty64x Жыл бұрын
This video is extremely helpful and not hard to watch at all so far. I need this information but got tired of seeing 3 hour long videos drag on. So far so good. thank you for providing this content to me. I need it for a mod I'm trying to build.
@furkanveliisk4113 Жыл бұрын
simple yet effective. thanks for the lectures brah
@ahmadal-hafi5802 жыл бұрын
Yooo U have a great way for explaining!
@envektro25193 жыл бұрын
I hope you keep doing these kind of videos
@lilit35522 жыл бұрын
This was well explained informative lesson. Thank you!
@mahdib93613 жыл бұрын
Amazing Video please Continue
@jusun20094 ай бұрын
Very helpful content and thorough explanation. Thank you for sharing!👍
@ibrahimylmaz8378 Жыл бұрын
thank you Bro :) I got my first job, I studied Java with your videos, super helpful.
@GraceHerbert-bk4it Жыл бұрын
Awesome as usual!
@darianchan46493 жыл бұрын
awesome tutorial!
@ajaykotian52 жыл бұрын
Thank you for posting this -- the video is extremely useful.
@blabberq2 жыл бұрын
Simple, good explanation :)
@faizalimuhammadzoda47312 жыл бұрын
Thanks for the effort. Appreciate it.
@esthermdzitiro313 жыл бұрын
Great video
@oguzhantopaloglu94423 жыл бұрын
extremely informative!
@waedradi85528 ай бұрын
Thanks bro One of the best 👏🏼
@sanayasamadhi70 Жыл бұрын
amazing video.u make my day
@SpidahRidah3 жыл бұрын
Excellent video. Thank you.
@user-jp3le2lz6d Жыл бұрын
Bro is genius in Java !
@faizalimuhammadzoda47312 жыл бұрын
Thanks for sharing!
@jrd3uCe10 ай бұрын
I will forever keep coming back to your page for review and better understanding
@argyriskappa27893 жыл бұрын
Bro, you just saved my semester. You da best.
@HIMANSHU-mt1jk
Жыл бұрын
Us bro
@saransridhara6622
Жыл бұрын
Saved mine as well 💥💥
@AbhijeetKumar-cm3jh3 жыл бұрын
Thanks BRO !!
@AEINTech3 жыл бұрын
Great video : )
@user-ke9vd6mx1n8 ай бұрын
best explanation!
@110dhruvpatel58 ай бұрын
you deserve a sub.
@ofiregev2 жыл бұрын
great video ! thank you very much !
@user-ke6vc7pk6x Жыл бұрын
very useful video
@essaalu70473 жыл бұрын
useful 👍💙
@mateskyjanica7696 Жыл бұрын
Good job, Bro
@magxbeats Жыл бұрын
Good sir 👍
@AVGilboa2 жыл бұрын
thank you!
@matteocamarca6 ай бұрын
Priceless. Thanks.
@NHCS_AMOGH_PATIL2 жыл бұрын
Bro you are great bro
@-zokzok-94552 жыл бұрын
that was awesome thank you sensei
@JohnWickXD2 жыл бұрын
OP stuff vrooo
@user-hr9dj3gm5u2 жыл бұрын
It is good explenation i have ever listened
@xpolentaedgex2 жыл бұрын
thanks for the class Bro
@pitched7401 Жыл бұрын
I was wondering something about the run method. Why is it not always necessary to implement the Runnable interface? I often see threads getting created with the Runnable interface or the corresponding lambda expression. If the Thread class already has it's own "run" method, why do people implement the Runnable interface seperately?
@calor6990 Жыл бұрын
Thank you friend!
@ruantristancarlinsky38512 жыл бұрын
Excellent video. Semester just started and this video really helped me out a lot man!. Please be sure to continue making more videos. Thanks
@behrangfattahi93282 жыл бұрын
Tnx bro you are the best
@girl69944 жыл бұрын
I used thread in Client and server project I made. If many Client need to connect to one server, I created many thread to handle many different Client.
@jenkar5716 Жыл бұрын
Virgin College: Takes hefty amout of fee but still doesn't know how to teach young minds Chad Bro: *Simple explanation and Free of cost*
@thangavelpetchiappan46892 жыл бұрын
well explained.. :)
@percivalgebashe4376 Жыл бұрын
Nice
@ivy2672 жыл бұрын
thx a lot bro
@user-oe8es7hu5h7 ай бұрын
That's cooool!
@oscarjosefsson9300 Жыл бұрын
So I guess this is normal. But I still got confused. Because when thread2 starts you can no longer know for sure in which order things will happen. Sometimes thread 2 will finish before you have time to check if it is running or how many threads are running. And sometimes it will still be alive when you check it. Try adding a few more printline statements in both threads. Quite interesting to see how it will sometimes execute one line of code from one thread then jump to the other thread and so on. Also when making thread2 a daemon thread there is actually no guarantee that it will have time to execute all of its program before the Main thread finishes and thus shuts down the program!
@Monsta12912 жыл бұрын
amazing
@shaynazoedeguzman74182 жыл бұрын
Two thumbs up! 👍👍
@adityavikramsingh8024 ай бұрын
This guy is an absolute DAWGGGGGGGGGGGGG
@Momo-qr3rd3 жыл бұрын
Thank you Bro :)
@chocodonuts36449 ай бұрын
helpful
@tanushthiru33896 ай бұрын
good vid 👍
@nehalayaaz94064 жыл бұрын
Thanks 😊
@abdullahalmahmud21462 жыл бұрын
awesome
@tuanhungpham4493 жыл бұрын
Thanks bro
@CJDaBomb69 Жыл бұрын
How did you get your console text to be that colour?
@osazeimohe77452 жыл бұрын
Thank you
@kippenvogelchen97173 жыл бұрын
nice!
@arijitdas39582 жыл бұрын
Hit like to SUPPORT HIM, If you believe HE IS THE LIFE SAVER !!!!!!!
@gogoi.3 жыл бұрын
Thank You
@MrLoser-ks2xn2 жыл бұрын
Thanks
@sofianealloui Жыл бұрын
BRO ♥
@kemann38152 жыл бұрын
Another banger
@harshith_takkala3 жыл бұрын
Hey thanks But at the second println statement of thread.active count, I am getting 1 sometimes and 2 sometimes Why? I have started the thread 2 also
@girl69944 жыл бұрын
Liked, by the way , there are so many people
@gustavokenzomiyamoto2434 Жыл бұрын
What is the relationship/difference between threads and methods (and classes)?
@tharinduperera8758
Жыл бұрын
Methods are actions that need to be taken place.. you can implement anything to do within the method. Let's say you need to execute that method 5 times in parallel. Then you can use threads.. threads will execute your method number of threads you have defined simultaneously.. if you did this using a loop it will execute one after another. Threads likes number of people doing the same function at the same time..instead of one handling the heavy load , multiple threads can handle the work load faster and efficiently with the cost of memory usage. And as bro taught you can use the thread execute the method or certain function with a certain time interval and so many other functions
@Makariush Жыл бұрын
THX
@tobrojekt272 жыл бұрын
if i set thread2 to daemon, it did not show up the message, that it is a daemon thread that is running. I needed to add thread2.join; after the thread2.start; statement, in order to execute the run() function of thread2 somehow
@tobrojekt27
2 жыл бұрын
and i dont know why it workd for u but not for me without the thread2.join
@yahelbraun54714 жыл бұрын
Can you make a video about @Override?
@BroCodez
4 жыл бұрын
kzread.info/dash/bejne/hKR8l5KcYr2TeMY.html
@yahelbraun5471
4 жыл бұрын
@@BroCodez thank you! Very good explanation!
@Bladermishal103 жыл бұрын
hmmm so the when you call a thread it just runs all the functions? because you didnt call the run function
@_sf_editz18702 жыл бұрын
I want to be a fellow bro
@Origon092 жыл бұрын
14:08 when you are using the run method. How does the method know which thread it is checking?
@Origon09
2 жыл бұрын
couldn’t it be checking the main thread and not the one you just created?
@carlosbernardo65312 жыл бұрын
@MrLoser-ks2xn Жыл бұрын
@yahelbraun54714 жыл бұрын
I don't understand what is a thread.. can someone explain?
@BroCodez
4 жыл бұрын
A thread is a single sequential flow of control within a program
@davidgonzalez-ge7ol2 жыл бұрын
GOLD
@manuelgonzalezpalafox2627 Жыл бұрын
Ly bro 12
@ponanbalagan29883 жыл бұрын
My query is how to add JFrame in database please answer bro code
@BroCodez
3 жыл бұрын
I haven't covered SQL yet, that may require a video to explain
@vitor16782 жыл бұрын
I'm dropping a comment down below for Bro.
@ricchiuto272 жыл бұрын
ok
@girl69944 жыл бұрын
My teacher didn’t taught me anything about daemon thread. Now I know something such as GC ‘s thread is a daemon thread. But there are still more daemon thread right? Could you list them?
@BroCodez
4 жыл бұрын
That one was the only example that I could find that I know of. You can make a user thread a daemon thread and the benefit is that the JVM does not wait for Daemon threads before exiting, while it waits for user threads, it does not exit unless all the user threads finish their execution
@girl6994
4 жыл бұрын
Bro Code but if JVM does not wait for daemon thread before exit , that sounds a little strange. But wait, I asked my teacher just now, he said in Chinese it calls 守护线程, which means thread protector thread, which means he will die if he’s lover dies.
@BroCodez
4 жыл бұрын
@@girl6994 Daemon threads do background tasks usually. We typically don't want the JVM to wait to exit for daemon threads. The JVM will wait for user threads however
@girl6994
4 жыл бұрын
Bro Code He didn’t mention that daemon thread always run background . I heard it for the first time.
@girl6994
4 жыл бұрын
Bro Code I understood. After your explanation. I didn’t know daemon thread well after that class. At that time I was very confused about why there is something calls daemon thread , but now I understood. Because Daemon threads do background task, and we don’t want JVM to wait to exit for daemon threads. No wonder it calls 守护线程in Chinese. It is a interesting translation though.
Пікірлер: 135
//********************************************************************* public class Main{ public static void main(String[] args) throws InterruptedException{ /* thread = A thread of execution in a program (kind of like a virtual CPU) The JVM allows an application to have multiple threads running concurrently Each thread can execute parts of you code in parallel with the main thread Each thread has a priority. Threads with higher priority are executed in preference compared to threads with a lower priority The Java Virtual Machine continues to execute threads until either of the following occurs 1. The exit method of class Runtime has been called 2. All user threads have died When a JVM starts up, there is a thread which calls the main method This thread is called “main” Daemon thread is a low priority thread that runs in background to perform tasks such as garbage collection JVM terminates itself when all user threads (non-daemon threads) finish their execution */ //System.out.println(Thread.activeCount()); //Thread.currentThread().setName("MAIN"); //System.out.println(Thread.currentThread().getName()); //Thread.currentThread().setPriority(10); //System.out.println(Thread.currentThread().getPriority()); //System.out.println(Thread.currentThread().isAlive()); /* for(int i =3;i>0;i--) { System.out.println(i); Thread.sleep(1000); } System.out.println("You are done!"); */ //MyThread thread2 = new MyThread(); //thread2.setDaemon(true); //System.out.println(thread2.isDaemon()); //thread2.start(); //System.out.println(thread2.isAlive()); //thread2.setName("2nd thread"); //System.out.println(thread2.getName()); //thread2.setPriority(1); //System.out.println(thread2.getPriority()); //System.out.println(Thread.activeCount()); } } //********************************************************************* public class MyThread extends Thread{ @Override public void run() { if(this.isDaemon()) { System.out.println("This is a daemon thread that is running"); } else { System.out.println("This is a user thread that is running"); } } } //*********************************************************************
@aquate9637
4 жыл бұрын
You should create a website and post your code there, I think people would really appreciate it.
@nikolamarkovic9906
2 жыл бұрын
Ched
@spicynoodles3317
2 жыл бұрын
Bro Code, please know you're out here saving lives, tears, grades, and reputations. I'm in an internship doing java programming and you're about 95% of the reason I've only cried once.
@yusuphmwaigomole3104
Жыл бұрын
Fantastic
@joyceasante8292
Жыл бұрын
Practicing... public class Main { public static void main (String[]args) throws InterruptedException { //System.out.println(Thread.activeCount()); //Thread.currentThread().setName("Main"); //System.out.println(Thread.currentThread().getName()); //Thread.currentThread().setPriority(1); //System.out.println(Thread.currentThread().getPriority()); //System.out.println(Thread.currentThread().isAlive()); /*for (int i = 8; i > 0; i--) { System.out.println (i); Thread.sleep (2000); } System.out.println("Done!"); */ MyThread thread2 = new MyThread(); thread2.setDaemon(true); System.out.println(thread2.isDaemon()); thread2.start(); //System.out.println(thread2.isAlive()); //thread2.setName("Thread II"); //System.out.println(thread2.getName()); //thread2.setPriority(1); //System.out.println(thread2.getPriority()); System.out.println(Thread.activeCount()); } } ************ public class MyThread extends Thread{ @Override public void run(){ if(this.isDaemon()){ System.out.println("Daemon thread is confirmed."); } else{ System.out.println("User thread is running."); } } }
Hey man! Last summer I spent my vacation in Florida watching your channel; wrote a cool game. This summer I'm on assignment in Germany, and I'm back to watching your channel again. You have the perfect way of teaching Java! 10-15 minutes, examples, fun. Just great.
@chsktricks9397
Жыл бұрын
Hey! Hi matthew
@scotch5094
3 ай бұрын
which course did he teach about game bro
@SpeaksYourWord
2 ай бұрын
@@scotch5094 He only has beginner courses unfortunately but it would be great if he made advanced ones even if paid.
pure gold, these tutorials are genius. more tutorials please
This was very useful after spending a couple days learning the basics of threads. If I began everything with watching this video, I wouldn't have known what was going on
by far the best java youtube channel
your playlists are amazing . thank you !
I love your channel, thank you so much. You make things so concise. I come to your channel for every topic in my Java class and view the videos on it before going through my professors provided resources. It helps me tremendously. Bless you, my guy.
Thank you! I appreciate all the explanations and examples!
this teaching saved me one day of exercising on pdfs about threads
This video is extremely helpful and not hard to watch at all so far. I need this information but got tired of seeing 3 hour long videos drag on. So far so good. thank you for providing this content to me. I need it for a mod I'm trying to build.
simple yet effective. thanks for the lectures brah
Yooo U have a great way for explaining!
I hope you keep doing these kind of videos
This was well explained informative lesson. Thank you!
Amazing Video please Continue
Very helpful content and thorough explanation. Thank you for sharing!👍
thank you Bro :) I got my first job, I studied Java with your videos, super helpful.
Awesome as usual!
awesome tutorial!
Thank you for posting this -- the video is extremely useful.
Simple, good explanation :)
Thanks for the effort. Appreciate it.
Great video
extremely informative!
Thanks bro One of the best 👏🏼
amazing video.u make my day
Excellent video. Thank you.
Bro is genius in Java !
Thanks for sharing!
I will forever keep coming back to your page for review and better understanding
Bro, you just saved my semester. You da best.
@HIMANSHU-mt1jk
Жыл бұрын
Us bro
@saransridhara6622
Жыл бұрын
Saved mine as well 💥💥
Thanks BRO !!
Great video : )
best explanation!
you deserve a sub.
great video ! thank you very much !
very useful video
useful 👍💙
Good job, Bro
Good sir 👍
thank you!
Priceless. Thanks.
Bro you are great bro
that was awesome thank you sensei
OP stuff vrooo
It is good explenation i have ever listened
thanks for the class Bro
I was wondering something about the run method. Why is it not always necessary to implement the Runnable interface? I often see threads getting created with the Runnable interface or the corresponding lambda expression. If the Thread class already has it's own "run" method, why do people implement the Runnable interface seperately?
Thank you friend!
Excellent video. Semester just started and this video really helped me out a lot man!. Please be sure to continue making more videos. Thanks
Tnx bro you are the best
I used thread in Client and server project I made. If many Client need to connect to one server, I created many thread to handle many different Client.
Virgin College: Takes hefty amout of fee but still doesn't know how to teach young minds Chad Bro: *Simple explanation and Free of cost*
well explained.. :)
Nice
thx a lot bro
That's cooool!
So I guess this is normal. But I still got confused. Because when thread2 starts you can no longer know for sure in which order things will happen. Sometimes thread 2 will finish before you have time to check if it is running or how many threads are running. And sometimes it will still be alive when you check it. Try adding a few more printline statements in both threads. Quite interesting to see how it will sometimes execute one line of code from one thread then jump to the other thread and so on. Also when making thread2 a daemon thread there is actually no guarantee that it will have time to execute all of its program before the Main thread finishes and thus shuts down the program!
amazing
Two thumbs up! 👍👍
This guy is an absolute DAWGGGGGGGGGGGGG
Thank you Bro :)
helpful
good vid 👍
Thanks 😊
awesome
Thanks bro
How did you get your console text to be that colour?
Thank you
nice!
Hit like to SUPPORT HIM, If you believe HE IS THE LIFE SAVER !!!!!!!
Thank You
Thanks
BRO ♥
Another banger
Hey thanks But at the second println statement of thread.active count, I am getting 1 sometimes and 2 sometimes Why? I have started the thread 2 also
Liked, by the way , there are so many people
What is the relationship/difference between threads and methods (and classes)?
@tharinduperera8758
Жыл бұрын
Methods are actions that need to be taken place.. you can implement anything to do within the method. Let's say you need to execute that method 5 times in parallel. Then you can use threads.. threads will execute your method number of threads you have defined simultaneously.. if you did this using a loop it will execute one after another. Threads likes number of people doing the same function at the same time..instead of one handling the heavy load , multiple threads can handle the work load faster and efficiently with the cost of memory usage. And as bro taught you can use the thread execute the method or certain function with a certain time interval and so many other functions
THX
if i set thread2 to daemon, it did not show up the message, that it is a daemon thread that is running. I needed to add thread2.join; after the thread2.start; statement, in order to execute the run() function of thread2 somehow
@tobrojekt27
2 жыл бұрын
and i dont know why it workd for u but not for me without the thread2.join
Can you make a video about @Override?
@BroCodez
4 жыл бұрын
kzread.info/dash/bejne/hKR8l5KcYr2TeMY.html
@yahelbraun5471
4 жыл бұрын
@@BroCodez thank you! Very good explanation!
hmmm so the when you call a thread it just runs all the functions? because you didnt call the run function
I want to be a fellow bro
14:08 when you are using the run method. How does the method know which thread it is checking?
@Origon09
2 жыл бұрын
couldn’t it be checking the main thread and not the one you just created?
I don't understand what is a thread.. can someone explain?
@BroCodez
4 жыл бұрын
A thread is a single sequential flow of control within a program
GOLD
Ly bro 12
My query is how to add JFrame in database please answer bro code
@BroCodez
3 жыл бұрын
I haven't covered SQL yet, that may require a video to explain
I'm dropping a comment down below for Bro.
ok
My teacher didn’t taught me anything about daemon thread. Now I know something such as GC ‘s thread is a daemon thread. But there are still more daemon thread right? Could you list them?
@BroCodez
4 жыл бұрын
That one was the only example that I could find that I know of. You can make a user thread a daemon thread and the benefit is that the JVM does not wait for Daemon threads before exiting, while it waits for user threads, it does not exit unless all the user threads finish their execution
@girl6994
4 жыл бұрын
Bro Code but if JVM does not wait for daemon thread before exit , that sounds a little strange. But wait, I asked my teacher just now, he said in Chinese it calls 守护线程, which means thread protector thread, which means he will die if he’s lover dies.
@BroCodez
4 жыл бұрын
@@girl6994 Daemon threads do background tasks usually. We typically don't want the JVM to wait to exit for daemon threads. The JVM will wait for user threads however
@girl6994
4 жыл бұрын
Bro Code He didn’t mention that daemon thread always run background . I heard it for the first time.
@girl6994
4 жыл бұрын
Bro Code I understood. After your explanation. I didn’t know daemon thread well after that class. At that time I was very confused about why there is something calls daemon thread , but now I understood. Because Daemon threads do background task, and we don’t want JVM to wait to exit for daemon threads. No wonder it calls 守护线程in Chinese. It is a interesting translation though.
halo
comment for stats
slay
hi
just "bro"
HELLOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
HELLOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO