中易网

java如何实现多线程绘图

答案:5  悬赏:40  
解决时间 2021-01-14 07:17
java如何实现多线程绘图
最佳答案
你单线程就可以实现啦,你直接在paint函数中根据他们的规律以变量的形式画出三个指针,然后再用线程中的run()中实现每一秒钟重画一次如
public void run(){
while(true){
Thread.sleep(1000);
frame.repaint();
}
}
这样就可以了,我之前刚好也做过,初学者,如果有需要,我可以把我做的源代码给你。。。
全部回答
多线程是java语言区别于其它语言的一大特点。其它语言向C++的话如果要实现多线程的话,必须调用操作系统的多线程机制。
在java5以前实现多线程有两种方法(继承Thread类和实现Runnable接口)。
它们分别为:
使用new Thread()和new Thread(Runnable)形式
第一种直接调用thread的run方法,所以,往往使用Thread子类,即new SubThread()。
第二种调用Runnable的run方法。
第一种:
new Thread(){}.start();这表示调用Thread子类对象的run方法,new Thread(){}表示一个Thread的匿名子类的实例对象,子类加上run方法后的代码如下:
new Thread(){
public void run(){
}
}.start();

第二种:
new Thread(
new Runnable(){}
).start();
这表示调用Thread对象接受的Runnable对象的run方法,new Runnable(){}表示一个Runnable的匿名子类的实例对象。
runnable的子类加上run方法后的代码如下:
new Thread(new Runnable(){
public void run(){
}
}
).start();

从java5开始,还有如下一些线程池创建多线程的方式:
package com.yonyou.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test{
public static void main(String[] args){
ExecutorService pool = Executors.newFixedThreadPool(3);
for(int i=0;i<10;i++)
{
pool.execute(new Runnable(){public void run(){ System.out.println();}});
}
Executors.newCachedThreadPool().execute(new Runnable(){public void run(){}});
Executors.newSingleThreadExecutor().execute(new Runnable(){public void run(){}});
}
}
java中多线程的实现方式有两种,一种是继承java.lang.Thread类,另一种是实现java.lang.Runnable接口。
下面是两种方式的简单代码。
继承Thread类方式:import java.lang.Thread; //用集成Thread类方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T(); T t2=new T(); //更改新线程名称 t1.setName("t1"); t2.setName("t2"); //启动线程 t1.start(); t2.start(); } } class T extends Thread{ //重写run()方法 public void run(){ System.out.println(this.getName()); } }输出结果为:t1t2实现Runnable接口方式:在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。import java.lang.*; //用实现Runnable接口的方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T(); T t2=new T(); //一定要实例化Thread对象,将实现Runnable接口的对象作为参数传入。 Thread th1=new Thread(t1,"t1"); Thread th2=new Thread(t2,"t2"); //启动线程 th1.start(); th2.start(); } } class T implements Runnable{ //重写run()方法 public void run(){ System.out.println(Thread.currentThread().getName()); } }输出结果为:t1t2public void run()方法是JAVA中线程的执行体方法,所有线程的操作都是从run方法开始,有点类似于main()方法,即主线程。
我暂时保留我的看法!
首先,如果你只是要实现电子时钟,根本就不需要用到多线程。
如果你真的是要使用,就新建一个类,实现Runnable接口就是了。
如:
class MyThread1 implements Runnable{
public MyThread(){
}
public void run(){
}
}
使用的时候,就:
Thread myThread=new Thread(new MyThread());
myThread.start();
如果要画图,你就直接把组件通过构造方法传到MyThread中就是了
追问:不用线程怎么做?
追答:你为什么要使用线程呢? try{ Thread.sleep(1000);}catch(Exception ex){System.exit(0);}然后你再在这里的后面更新你的显示不就可以了吗?
追问:那分钟,小时怎么搞?换算成60*1000 3600*1000?我做的时候很麻烦,因为两个数字显示的时间总是不同步,我想是因为两个在执行过程中产生了时间差,所以我准备用线程同步机制做。。
追答:亲,如果你是用JLable来显示的话,你不会:
hour.setText("**");
min.setText("**");
sec.setText("**");
把这些同时放在一个大括号里面不行吗??
追问:难道你是这个意思?while(true) {
Thread.sleep(1000);
t++;
if(t % 3600 == 0) {
hour.setText( (h+1)%24);
}
if(t % 60 == 0) {
min.setText((m+1)%60);
}
sec.setText((s+1)%60);
}好想法! 我一直想着每个时间都要一个时钟信号,谢谢了。 看来我的逻辑思维,数学思维能力有待提高。但是话说回来,线程同步可以让另外两个线程阻塞,减少判断次数,也不错。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
平心而论 2k16里面是不是威少比库里更强更好
跪求Randy blue公司的RaySource下载链接
对人身中的aq代表什么意思?
阳光音乐艺术中心琴行(东郊店)地址在哪,我要
谁知道“仙剑奇侠传1”中的所有出现过的招式
老外说Hey there you are hot,说我是热的?
等待的作文800字
百度外卖送餐是商家自己送还是百度统一送
水泥电阻 10W3R9J 和 10W10ΩJ 区别很大吗?
《激战奇轮》讲述的是一个什么样的故事?
滨州东区练车场在哪
我是95年12月初6我女朋友是95年12月初7这样结
瑶海区到大蜀山的公交?
中国移动爱家加盟店NO.38地址有知道的么?有
在西电如何报考第二专业?详细步骤是什么?另
推荐资讯
请问这个女生叫什么w
硫氧镁水泥冬天干得慢有解决办法吗?
德国asppuer/欧索普尔 os-936lb怎么样,
怎么培养板栗苗
卢氏到灵宝的班车最晚几点呢?
怎么判断静摩擦力和滑动摩擦力
金庸群侠传x神秘使者怎么过
火车票9点能否改乘7时
怎样才能走进玉石市场
龙头山供电所地址在什么地方,想过去办事
若某一股票的期望收益率为12%,市场组合期望
最像lol的手游
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?