线程学习

 //DeadClass2.java
//
//2009-11-22

//<applet code=DeadClass4 width=200 height=100>
//</applet>

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class DeadClass4 extends JApplet
{
 
 int count1=0;//decreaseT和increaseT是两个不同的线程,将两变量放在线
        //程外,才能达到求绝对值的效果。
 int count2=0;

 JTextField txt1=new JTextField(5);
 JTextField txt2=new JTextField(5);
 JTextField txt3=new JTextField(14);
 JButton increase=new JButton("Increase");
 JButton decrease=new JButton("Decrease");


 class  ThreadClass extends Thread
 {

  int count;
  boolean flag;
  public void run(){

   while (true)
   {
    if (flag)
    {
     
     txt2.setText(Integer.toString(count1++));
    }
    else
     txt1.setText(Integer.toString(count2--));

    try
    {
     sleep(1000);
    }
    catch (InterruptedException e){}
    txt3.setText("count1+count2= "+Integer.toString(count1+count2));
   }
  }

  
 }
 
 ThreadClass increaseT;
 ThreadClass decreaseT;


 class IncreaseButtonLis implements ActionListener
 {
  public void actionPerformed(ActionEvent e){
   if (increaseT==null)
   {
    increaseT=new ThreadClass();
    increaseT.flag=true;
    increaseT.start();
   }

  }
 }

 class DecreaseButtonLis implements ActionListener
 {
  public void actionPerformed(ActionEvent e){
   if (decreaseT==null)
   {
    decreaseT=new ThreadClass();
    decreaseT.flag=false;
    decreaseT.start();
   }
  }
 }

 public void init(){
  Container cp=getContentPane();
  cp.setLayout(new FlowLayout());
  cp.add(txt1);
  cp.add(txt2);
  cp.add(txt3);
  cp.add(increase);
  cp.add(decrease);
  increase.addActionListener(new IncreaseButtonLis());
  decrease.addActionListener(new DecreaseButtonLis());
 }

 


 
}

 


程序最重要的改动不是增加了一个计算 count1 和 count2 变量绝对值之差的功能,而是
把这两个变量的声明放在了线程类之外。
因为 addThread 和 subThread 线程是两个不同的对象,如果这两个变量在内部类中,那
么 addThread线程中的 count1+count2 相当于:
addThread.count1+addThread.count2
前者虽然在累加,但是后者永远为0。
subThread线程中的 count1+count2 相当于:
subThread.count1+subThreadcount2
后者虽然在累减,但是前者永远为0。
如果变量在外部类中,那么两个线程中的 count1 和 count2 就是同一变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值