Jump to content

Recommended Posts

Posted (edited)

When you create a task to be executed in X time, does the thread burden the pool or the OS even in that X time or only at the execution? Who is responsible for the countdown of that X time?

Edited by Hustman
  • Hustman changed the title to Question about Threads in L2J
Posted

If you properly use L2J ThreadPoolManager implementation, you simply pick a thread from an existing pool and once executed it returns to the pool - similar to a db connection factory.

 

L2J implementation is nothing more than dedicated ThreadPoolExecutor / ScheduledThreadPoolExecutor, 4 of each types.

 

You can read more on Google, as introduction

https://www.baeldung.com/thread-pool-java-and-guava

https://www.geeksforgeeks.org/thread-pools-java/

 

And whatever related to ThreadPoolExecutor / ScheduledThreadPoolExecutor classes.

Posted (edited)
15 hours ago, Tryskell said:

If you properly use L2J ThreadPoolManager implementation, you simply pick a thread from an existing pool and once executed it returns to the pool - similar to a db connection factory.

 

L2J implementation is nothing more than dedicated ThreadPoolExecutor / ScheduledThreadPoolExecutor, 4 of each types.

 

You can read more on Google, as introduction

https://www.baeldung.com/thread-pool-java-and-guava

https://www.geeksforgeeks.org/thread-pools-java/

 

And whatever related to ThreadPoolExecutor / ScheduledThreadPoolExecutor classes.

Thank you for answering, very instructive article. However, I am unable to locate in the ScheduledThreadPoolExecutor section, who is responsible for the delay countdown. Does the thread also perform this function? Does this mean that it uses CPU resources even before executing?

Edited by Hustman
Posted

The thread is simply an executable class, the ScheduledThreadPoolExecutor handles the management of it. How ? Who cares, it was optimized for you by some high-grade dudes years ago and added directly in Java.

 

Seeing how much tasks are generated by seconds (network, AI, and random tasks), it probably costs almost none CPU/RAM. You only have to assure yourself to avoid to bottleneck the system.

 

Not sure why you need this answer, your best bet is to make tests yourself because litteraly none did that before you (at least, I didn't).

Posted

What you can try to do is to change dynamically each executor's thread size based on your current cpu usage (ThreadPoolExecutor#setCorePoolSize). Although, i don't think that you will need such an optimization.

Posted
4 hours ago, Zake said:

What you can try to do is to change dynamically each executor's thread size based on your current cpu usage (ThreadPoolExecutor#setCorePoolSize). Although, i don't think that you will need such an optimization.

The only thing I want to know is, who is responsible for the countdown of the delay, that's all.

  • 3 months later...
Posted (edited)

new thread waits for execute runnable. It means jvm calling OS for new thread when you create scheduled execution (that's for single Timer). ScheduledThreadPoolExecutor works asynchronously 

Edited by amaranthe92

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • No matter what you are going to use, paid or non-paid or whatever, everything requires personal time investment and a lot of trial and error in many sectors of IT. I have used and seen (clients of mine) L2J Sunrise, Mobius, ACIS, and Lucera. Not even one was close enough to providing a decent outcome without the need for some heavy dev intervention. Even if you provide a decent pack, you will have to think about cheaters, marketing, monitoring, network protection, and the list goes on depending on the problem. Thus, I have no clue why people here debate so much about datapacks because  I remember the days when we were playing on private servers with 80% less functionality than the current Lineage 2 emulator state, and it was enough to have fun. Now the leftovers are such a toxic community that I have no idea what drives people to open projects except money.    My 2 cents choose whatever will ease your life in terms of development and your life/work/budget balance and dont spent months trying to figure out what datapack is superior over the other. You have more serious things to consider.
    • I’ve played around with similar growth setups, and what usually makes the whole thing smoother is pairing them with something steady on the side. For example, I once used famoid.com for a small boost so the main profile didn’t look empty while the Mother/Child flow warmed up. Your themed accounts idea can work nicely as long as the profiles stay active and feel human enough to spark replies.
    • I never said that, can you read? Are you going to start an argument when that isn't the main goal of this post? Or are you just used to the same old discussion mechanics?     Thank you very much for your recommendation. A few months ago, I worked on a project called 'L2Avalon' using a compiled Lucera2 (it was the only thing the project leader provided me), and based on my 20 years of experience playing Lineage 2, I feel like it's broken everywhere, unless the specific version of Lucera I was using was just old. I don't have a problem coding and fixing things, but I am looking for a solid base so I don't do unnecessary work.   Replying to the first guy: I would never discredit paid work; obviously, any paid work will be better than a free one for obvious reasons. But my reality is that I don't want to throw money away, mainly because saving up a large sum of money is a matter of several months in my current situation here in Argentina.
    • I was not expecting either system to be mentioned but to update this information  itopz is a topsite VDSystem is a server vote system   as the creator i gave the vote system free but made mandatory to use my topsite https://github.com/nightw0lv/VDSystem download free, needs an extensive configuration and all java versions to be installed so it can befully be build, but only if you plan to maintain the full solution for all projects in case you want to use only 1 project you just copy the files for example frozen https://github.com/nightw0lv/VDSystem/tree/master/Interlude/Frozen copy paste inside your project, apply the patch of call the main class to gameserver.java and done.   note for active projects minor changes will probably be required   about the latest version hopzone.eu my other topsite is also required to have a server and get an api key same reason system is free, appriciate it. there is a huge difference that also extends as example in l2j Note to the topic owner @zambog420 lucera is also an option specially if you feel coding ready with intellij  
    • good service...recommend.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock