Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #30209
| Path | csiph.com!usenet.pasdenom.info!aioe.org!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Knute Johnson <eternal@knutejohnson.com> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: merging two independant Java programs into one Java program running two threads? |
| Date | Mon, 27 Oct 2014 08:09:57 -0700 |
| Organization | A noiseless patient Spider |
| Lines | 125 |
| Message-ID | <m2ln7h$oup$1@dont-email.me> (permalink) |
| References | <c306a7d8-970d-4efe-9776-cb27b69568f9@googlegroups.com> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=windows-1252; format=flowed |
| Content-Transfer-Encoding | 7bit |
| Injection-Date | Mon, 27 Oct 2014 15:09:38 +0000 (UTC) |
| Injection-Info | mx02.eternal-september.org; posting-host="aba33539224e5c782fe0c4053f7756fd"; logging-data="25561"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19AL0z6Aol6Vtm6M17a0EmI" |
| User-Agent | Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 |
| In-Reply-To | <c306a7d8-970d-4efe-9776-cb27b69568f9@googlegroups.com> |
| Cancel-Lock | sha1:ENky+FuQoz8nh5WcF1cwOKK86Nc= |
| Xref | csiph.com comp.lang.java.programmer:30209 |
Show key headers only | View raw
On 10/27/2014 06:33, John wrote:
> Hi:
>
> I have two independent Java programs. Program A is a GUI program.
> Program B continuously take screen shots every 5 seconds and save
> them into PNG picture files.
>
> Right now, I start running Java Program B first, then start Program
> A, doing GUI interaction etc.
>
> I hope to merge the two into one Java program which runs the original
> two programs by two interdependent processes or threads(not sure
> which one is correct. Help please). And I would like to have this
> feature: when GUI interaction by me proceeds to certain stage, e.g.
> when I click Button 'XYZ' on the GUI, the process/thread taking
> screen shots halts. After a while, when I click another button, the
> halted process/thread proceeds again. At the end, when I quit the GUI
> program, the process/thread taking the screen shots ends as well.
>
> I think this makes me learn multi-thread programming or inter-process
> communication. If you could shed some light on this project, I would
> greatly appreciate it.
>
> Thank you very much.
>
Eric gave you a good discussion of the issues. This is just a simple
example of starting and stopping a Thread to do a second task in your
GUI program.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test2 extends JFrame implements ActionListener, Runnable {
private final JMenuItem startstop;
private final JTextArea textArea;
private volatile Thread thread;
private boolean runFlag;
public test2() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
stop();
dispose();
}
});
JMenuBar mb = new JMenuBar();
setJMenuBar(mb);
JMenu file = mb.add(new JMenu("file"));
startstop = file.add("start");
startstop.addActionListener(this);
textArea = new JTextArea("");
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane,BorderLayout.CENTER);
setSize(400,300);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
switch (ae.getActionCommand()) {
case "start":
textArea.append("start\n");
startstop.setText("stop");
start();
break;
case "stop":
textArea.append("stop\n");
startstop.setText("start");
stop();
break;
}
}
public void start() {
runFlag = true;
thread = new Thread(this);
thread.start();
}
public void run() {
while (runFlag) {
// do your thing
EventQueue.invokeLater(new Runnable() {
public void run() {
textArea.append("running\n");
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
EventQueue.invokeLater(new Runnable() {
public void run() {
textArea.append("sleep interrupted\n");
}
});
}
}
}
public void stop() {
runFlag = false;
thread.interrupt();
}
public static void main(String... args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new test2();
}
});
}
}
--
Knute Johnson
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Find similar | Unroll thread
merging two independant Java programs into one Java program running two threads? John <xsli2@yahoo.com> - 2014-10-27 06:33 -0700 Re: merging two independant Java programs into one Java program running two threads? Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-10-27 10:57 -0400 Re: merging two independant Java programs into one Java program running two threads? Knute Johnson <eternal@knutejohnson.com> - 2014-10-27 08:09 -0700
csiph-web