View Full Version : کلاس Timer در جاوا
rezaricky
یک شنبه 21 آذر 1389, 14:28 عصر
سلام دوستان
من برنامه زیرو نوشتم که یک کلاس تایمر ایجاد میکنه ولی مشکلی که داره اینه که فقط یک بار اجرا میشه
در حالی که من میخوام مثلا 10 بار اجرا بشه
اگه میشه کمک کنین
import java.util.Timer;
import java.util.TimerTask;
public class period
{
public int count=0;
Timer timer=new Timer();
ToDo todo=new ToDo();
/** Creates a new instance of period */
public period ()
{
timer.schedule (new ToDo(),1000);
}
public static void main(String args[]){
new period();
}
class ToDo extends TimerTask{
public void run(){
{
int count=0;
System.out.println("Task scheduled.");
count++;
if (count>5)
timer.cancel ();
}
}
}
}
java_nith
دوشنبه 22 آذر 1389, 08:11 صبح
چون کدت یکم فهمیدنش سخت بود خودم یدونه وسعت نوشتم
این برنامه ۵ ثانیه میشمر و بد تموم میشه
اگه اینو در حلقه for بذاری که ۱۰ بر این کارو انجام بده
اون موقع ۱۰ تا کلاسه مثل هم درست کنه، هماشون تقریبا باهم شروع میشن باهم تموم میشن
و اگه منظورم اینه که با ۱۰ بر ۵۰ ثانیه کار کنه، اون موقع فکر کنم اگه از Thread.sleep اسفتده کنی بهتر باشه
import java.util.*;
public class Timer extends TimerTask{
private java.util.Timer t;
public Timer(){
t = new java.util.Timer();
t.schedule(this, 5000);
}
@Override
public void run() {
System.out.println("Now we have counted down and program end");
t.cancel();
}
public static void main(String [] args){
Timer t = new Timer();
}
}
rezaricky
دوشنبه 22 آذر 1389, 10:05 صبح
خیلی ممنون دوست عزیز
ولی من میخوام تایمری که نوشتم خود به خود اجرا بشه و اگه قراره از for استفاده کنم که دیگه تایمرو میخوام چی کار!!!
مثلا توی vb.net ما یک تایمر روی فرم میذاریم و بهش Interval میدیم و کدشو مینویسیم حالا تا هر وقت که ما بخوایم اجرا میشه
حالا این کارو توی جاوا چه جوری باید بکنیم؟؟؟
java_nith
چهارشنبه 24 آذر 1389, 05:30 صبح
http://www.javapractices.com/topic/TopicAction.do?Id=54
javaphantom
چهارشنبه 24 آذر 1389, 11:35 صبح
چون کدت یکم فهمیدنش سخت بود خودم یدونه وسعت نوشتم
این برنامه ۵ ثانیه میشمر و بد تموم میشه
اگه اینو در حلقه for بذاری که ۱۰ بر این کارو انجام بده
اون موقع ۱۰ تا کلاسه مثل هم درست کنه، هماشون تقریبا باهم شروع میشن باهم تموم میشن
و اگه منظورم اینه که با ۱۰ بر ۵۰ ثانیه کار کنه، اون موقع فکر کنم اگه از Thread.sleep اسفتده کنی بهتر باشه
import java.util.*;
public class Timer extends TimerTask{
private java.util.Timer t;
public Timer(){
t = new java.util.Timer();
t.schedule(this, 5000);
}
@Override
public void run() {
System.out.println("Now we have counted down and program end");
t.cancel();
}
public static void main(String [] args){
Timer t = new Timer();
}
}
با اجازه استاد من یک تغییر کوچیک توی این کدت بدم که کار این بنده خدا هم راه بی افتده که سوابش همه باهم ببرین.
می خوای یک کاری تا قیوم قیامت توی یک پروید زمانی خواصی هی تکرار بشه. راست می گی خیلی بده که vb بکنه ولی جاوا نکنه. زشته . اما قبل از اینکه برم سر کد چون صحبت از vb کردی می خوام یکم عذابت بدم تا از این به بعد vb و کلا محصولات آشغالی ماکروسافت رو توی فروم java بکار نبری :بامزه: :چشمک: :شیطان:
شما وقتی توی vb یا C# می یایی از اون timer لعنتی که گفتی استفاده می کنی برنامه شما thread safe نیست برای اینکه بهت ثابت کنم، یک کرنومتر معمولی درست کند که فقط مثلا یک ثانیه یک ثانیه بره جلو توی یک form معمولی بعد رو همون فرم با ماوس فقط press کن یعنی click نکن دکمه ماوس فشار بده و نگر دار ببین چه اتفاق خنده داری برای timer ت می افته. اما بریم سراغ جاوا.
کلی کار می شه کرد که من در موردش نمی خوام حرف بزنم یادم چند ماه بیش یک کدی اینطوری برای یک نفر نوشتم توی این فروم گذاشتم که با GUI شما می تونی یک search ی بزنی اما بریم سراغ کد استاد که یکم تغییرش بدیم که کار شما هم راه بیوفته
public class MyTimer extends TimerTask {
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
/**
* The action to be performed by this timer task.
*/
@Override
public void run() {
System.out.println("time = " + simpleDateFormat.format(System.currentTimeMillis() ));
}
public static void main(String[] s) {
MyTimer myTimer = new MyTimer();
Timer timer = new Timer();
timer.schedule(myTimer,2000,1000);
}
}
این کد تا قیام قیامت برات هر یک ثاینه یک بار ساعت سیستم رو با ثانیه برات چاپ می کنه و اون 2000 یعنی اولش یک 2 ثانیه مکس کن. می تونی خودت تغییرش بدی.
درضمن thread safe هم هست. حالا بگو جاوا بده vb خوبه.
atrinsoft
شنبه 15 خرداد 1395, 16:18 عصر
با اجازه استاد من یک تغییر کوچیک توی این کدت بدم که کار این بنده خدا هم راه بی افتده که سوابش همه باهم ببرین.
می خوای یک کاری تا قیوم قیامت توی یک پروید زمانی خواصی هی تکرار بشه. راست می گی خیلی بده که vb بکنه ولی جاوا نکنه. زشته . اما قبل از اینکه برم سر کد چون صحبت از vb کردی می خوام یکم عذابت بدم تا از این به بعد vb و کلا محصولات آشغالی ماکروسافت رو توی فروم java بکار نبری :بامزه: :چشمک: :شیطان:
شما وقتی توی vb یا C# می یایی از اون timer لعنتی که گفتی استفاده می کنی برنامه شما thread safe نیست برای اینکه بهت ثابت کنم، یک کرنومتر معمولی درست کند که فقط مثلا یک ثانیه یک ثانیه بره جلو توی یک form معمولی بعد رو همون فرم با ماوس فقط press کن یعنی click نکن دکمه ماوس فشار بده و نگر دار ببین چه اتفاق خنده داری برای timer ت می افته. اما بریم سراغ جاوا.
کلی کار می شه کرد که من در موردش نمی خوام حرف بزنم یادم چند ماه بیش یک کدی اینطوری برای یک نفر نوشتم توی این فروم گذاشتم که با GUI شما می تونی یک search ی بزنی اما بریم سراغ کد استاد که یکم تغییرش بدیم که کار شما هم راه بیوفته
public class MyTimer extends TimerTask {
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
/**
* The action to be performed by this timer task.
*/
@Override
public void run() {
System.out.println("time = " + simpleDateFormat.format(System.currentTimeMillis() ));
}
public static void main(String[] s) {
MyTimer myTimer = new MyTimer();
Timer timer = new Timer();
timer.schedule(myTimer,2000,1000);
}
}
این کد تا قیام قیامت برات هر یک ثاینه یک بار ساعت سیستم رو با ثانیه برات چاپ می کنه و اون 2000 یعنی اولش یک 2 ثانیه مکس کن. می تونی خودت تغییرش بدی.
درضمن thread safe هم هست. حالا بگو جاوا بده vb خوبه.
من عمری هست دارم با تایمر های وی بی کار می کنم تایمر در حال استفاده هست نه تنها یک تایمر حتی در فرم من ممکنه چندین تایمر باشه - به هیچ وجه برنامه کرش نمی کنه و براحتی می شه در حین عملیات تایمر کارهای دیگه ای هم انجام داد و باید بگم شما ظاهرا با وی پی و محصولات بی نظیر مایکروسافت کار نکردید و نظر شخصی خودتون رو تحت دانش اندک خودتون از زبان برنامه نویسی ویژوال بیان کردید
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.