Java编程题:三线程接力
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程题:三线程接力相关的知识,希望对你有一定的参考价值。
编写一个应用程序,除了主线程外,还有三个线程:first、second和third。First负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)到(200,60);third负责模拟一个蓝色的按钮从坐标(200,60)到(300,60)。
帮我女友求的代码,求各位大神援助,所有分都送上了。
要有图形界面呀 ~亲!求各位大神!又把刚赚的20分加上了。
觉得好就加到100分吧。呵呵
_-----------------------------------------------
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
public class AppDemo extends JFrame implements Runnable
private int index = 1;
private JButton btnFirst = null;
private JButton btnSecond = null;
private JButton btnThird = null;
public AppDemo()
getContentPane().setLayout(null);
btnFirst = new JButton("first");
btnFirst.setBackground(Color.RED);
btnFirst.setBounds(10, 60, 85, 23);
getContentPane().add(btnFirst);
btnSecond = new JButton("second");
btnSecond.setBackground(Color.GREEN);
btnSecond.setBounds(100, 60, 85, 23);
getContentPane().add(btnSecond);
btnThird = new JButton("third");
btnThird.setBackground(Color.BLUE);
btnThird.setBounds(200, 60, 85, 23);
getContentPane().add(btnThird);
new Thread(this).start();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(450, 300);
setVisible(true);
public static void main(String[] args)
new AppDemo();
public void run()
while (true)
try
if (index == 1)
btnFirst.setBounds(btnFirst.getX() + 5, 60, 85, 23);
if (btnFirst.getX() == 100)
break;
else if (index == 2)
btnSecond.setBounds(btnSecond.getX() + 5, 60, 85, 23);
if (btnSecond.getX() == 200)
break;
else
btnThird.setBounds(btnThird.getX() + 5, 60, 85, 23);
if (btnThird.getX() == 300)
break;
Thread.sleep(500);
catch (Exception e)
if (index < 4)
index++;
new Thread(this).start();
参考技术A 要是不用图形界面的话
代码是:
public class thread_test implements Runnable
public void run()
int count=10;
while(count<=100)
try
Thread.sleep(10);
System.out.println("first:"+"("+count+",60)");
count++;
catch(Exception e)
e.printStackTrace();
public void run1()
int count=100;
while(count<=200)
try
Thread.sleep(100);
System.out.println("second:"+"("+count+",60)");
count++;
catch(Exception e)
e.printStackTrace();
public void run2()
int count=200;
while(count<=300)
try
Thread.sleep(1000);
System.out.println("third:"+"("+count+",60)");
count++;
catch(Exception e)
e.printStackTrace();
public static void main(String args[])
thread_test t=new thread_test();
Thread thread=new Thread();
System.out.println("倒数321!!开始执行!");
for(int i=3;i>=1;i--)
try
Thread.sleep(1000);
System.out.println(i);
catch(Exception e)
e.printStackTrace();
t.run();
t.run1();
t.run2();
thread.start();
追问
求这位java杀手大神指导,如何加上图形界面?
参考技术B 这个不难,用线程同步就行!我想问的是,你想要的效果是三个按钮先后顺序地按规定坐标运行吗?直线还是曲线?追问嗯,这个问题要实现接力——也就是要求不同颜色的按钮按照先后顺序(先红,后绿,再蓝)地按规定坐标运行,直线可能会简单些,曲线的情况太多,会很复杂吧?谢谢啦~~~~~~~~~~~~~~~~~~o(∩_∩)o
参考技术C 应用同步包中CyclicBarrier 可以实现接力,至于界面不是重点。 参考技术D 只是简单控制的话,用不到线程啊追问但是题目上是这么要求的,老师可能就是考察这一块的应用,但是我不懂Java的线程 所以很着急
以上是关于Java编程题:三线程接力的主要内容,如果未能解决你的问题,请参考以下文章
2020最新Java工程师面试题-Java 并发编程(附答案,持更中)
第85题JAVA高级技术-网络编程4(网络资源的多线程下载)
第84题JAVA高级技术-网络编程3(网络资源的单线程下载)