简单问题

simaping 2006-12-27 11:28:04
创建两个线程,一个每隔一秒将整型变量num加一,另一个线程每隔三秒判断num是否大于100,若是结束两个线程。
用应用程序和Applet都可以。请各位高手给出代码学习一下。

另外以下是我的Applet有错,请各位指点。

import java.applet.*;
import java.awt.*;
public class Test extends Applet implements Runnable
{
int num;
Thread T1,T2;
TextArea ta;
public void init()

{num=1;
T1=new Thread(this);
T2=new Thread(this);
ta=new TextArea(12,20);
add(ta);}
public void start()

{T1.start();
T2.start();
}
public synchronized void change(int number)
{
while(true)
{if (Thread.currentThread()==T1)
{number+=number;
try{
Thread.sleep(1000);
}catch(InterruptedException e)
{System.out.println(e);}
ta.append(" "+number);
}
else if (Thread.currentThread()==T2)
{if(number>50)
{
ta.append("\n"+number);
return;
}
else{
try{
Thread.sleep(500);}
catch(InterruptedException e){System.out.println(e);}

}}

}}


public void run()
{
if(Thread.currentThread()==T1||Thread.currentThread()==T2)
change(num);

}



}
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fool_leave 2006-12-27
  • 打赏
  • 举报
回复
class CommStruct{//用来存放信息的类
boolean isFinished=false;
int num=0;
}

class Thread1 extends Thread{
CommStruct struct;
public Thread1(CommStruct struct){
this.struct=struct;
}
public void run(){
while(!struct.isFinished){
try{sleep(1000);}catch(Exception e){}
synchronized(struct){
if(struct.isFinished){
return;
}
struct.num++;
}
}
}
}

class Thread2 extends Thread{
CommStruct struct;
public Thread2(CommStruct struct){
this.struct=struct;
}
public void run(){
while(!struct.isFinished){
try{sleep(3000);}catch(Exception e){}
synchronized(struct){
if(struct.isFinished){
return;
}
if(struct.num>100){
struct.isFinished=true;
return;
}
}
}
}
}


没编译,自己看吧,应该有拼写错误
biaoflying 2006-12-27
  • 打赏
  • 举报
回复
我的:
public class TwoThread extends Thread
{
private static int num=0;
public void run()
{
while(true)
{
try
{
sleep(1000);
System.out.println(num++);
}
catch(InterruptedException e){}
}
}
public static void main(String[] args)
{
TwoThread tt=new TwoThread();
tt.start();
new Thread(new Runnable()
{
public void run()
{
try
{
while(true){
Thread.currentThread().sleep(3000);
if(num>100)
System.exit(1);
}
}
catch(InterruptedException e){}
}
}).start();
}
}
白云冰河 2006-12-27
  • 打赏
  • 举报
回复
import java.applet.*;
import java.awt.*;

public class d extends Applet implements Runnable {
CommStruct s;

Thread1 T1;

Thread2 T2;

public static TextArea ta;

public void init()

{
s = new CommStruct();
T1 = new Thread1(s);
T2 = new Thread2(s);
ta = new TextArea(12, 20);
add(ta);
}

public void start()
{
run();
}

public void run() {
T1.start();
T2.start();
}

}

class CommStruct {// 用来存放信息的类
boolean isFinished = false;

int num = 90;
}

class Thread1 extends Thread {
CommStruct struct;

public Thread1(CommStruct struct) {
this.struct = struct;
}

public void run() {
while (!struct.isFinished) {
try {
sleep(1000);
} catch (Exception e) {
}
synchronized (struct) {
if (struct.isFinished) {
return;
}

print(d.ta);
struct.num++;

}
}
}

public void print(TextArea a){
a.append(struct.num+" ");
if (struct.num%4==0)
a.append("\n");
}
}

class Thread2 extends Thread {
CommStruct struct;

public Thread2(CommStruct struct) {
this.struct = struct;
}

public void run() {
while (!struct.isFinished) {
try {
sleep(3000);
} catch (Exception e) {
}
synchronized (struct) {
if (struct.isFinished) {
return;
}
if (struct.num > 100) {
struct.isFinished = true;
return;
}
}
}
}
}

结合上面两人的完整程序

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧