Thursday, 15 July 2010

java - Kill thread on close -



java - Kill thread on close -

i have constructor of jframe have thread(t1) running

while(true)

i know how implement jframe can kill thread when close it, because t1 need running when jframe active

edit: here code:

public class vue_session extends jframe { private jpanel contentpane; private int idsess; private user u; public vue_session(user us, int id) { this.u = us; this.idsess = id; toserv t=new toserv(idsess); setdefaultcloseoperation(jframe.dispose_on_close); dimension screensize = toolkit.getdefaulttoolkit().getscreensize(); setbounds((int) screensize.getwidth() / 2 - 800 + (800 / 2), 90, 800, 600); contentpane = new jpanel(); contentpane.setborder(new emptyborder(5, 5, 5, 5)); setcontentpane(contentpane); contentpane.setlayout(new borderlayout()); vue_idee vueidee = new vue_idee(this.idsess, this.u); contentpane.add(vueidee, borderlayout.south); vue_ideesession vuesess = new vue_ideesession(this.idsess); contentpane.add(vuesess, borderlayout.center); thread t1 = new thread( new runnable(){ public void run(){ while(true){ try{ thread.sleep(500); }catch (interruptedexception e) { // todo auto-generated grab block e.printstacktrace(); } t.getidee(); vuesess.act(); revalidate(); } } }); t1.start(); }

you can handle boolean variable

boolean end = false; while (!end){...}

also suggest utilize executorservice or forkjoinpool can command tasks, threads, etc

edit:

boolean end = false; new thread(() -> { while (!end) { //... } }).start();

and should end tasks:

addwindowlistener(new java.awt.event.windowadapter() { public void windowclosed(java.awt.event.windowevent evt) { end = true; system.exit(0); // or this.dispose(); } });

good luck :)

java multithreading jpanel

No comments:

Post a Comment