多线程

Java多线程实践

多线程
1.Java提供了类java.lang.Thread来编写多线程。


2.方法一:继承Thread类,覆盖方法run(),在创建的Thread 类的子类中重写run()方法,加入
线程所要执行的代码即可。
   public class MyThread extends Thread{
    int count=1,number;
    public MyThread(int num)
    {
 number=num;
        System.out.println("创建线程"+number);
     }
     public void run()
    {
 while(true)
 {
     System.out.println("线程"+number+":计数"+count);
     if(++count==8)
  return;
 }
      }

      public static void main(String[] args)
      {
 for(int i=0;i<5;i++)
     new MyThread(i+1).start();
 }
 }


3.方法二:
  实现Runnable接口。当使用Runnable接口时,不能直接创建所需类的对象关运行它;必须
从Thread类的一个实例内部运行它。例:
 import java.util.*;
 class TimePrinter implements Runnable{
   int pause Time;
   String name;
   public TimePrinter(int x,Sting n)
   {
 pause Tinm=x;
 name=n;
    }

    public void run()
   {
 while(true)
 {
    try{
                    //返回以毫秒为单位的当前时间。返回类型为long
     System.out.println(name+":"+new Date(System.currentTimeMillis());
     Thread.sleep(pause Time);
    }
      catch(Exception e)
      {
         e.printStackTrace();
       } 
   }
      }
   public static void main(String[] args)
   {
  Thread t1=new Thread(new TimePrinter(1000,"Fast Guy");
 t1.start();
 Thread t2=new Thread(new TimePrinter(3000,"Slow Guy");
 t2.start();
   }
}


4.synchronized关键字:
  对一个银行中的多项活动进行同步处理,通过synchronized关键字来处理。
  public class Account{
   String holderName;
   float amount;
   public Account(String name,float amt)
   {
 holderName=name;
 amount=amt;
    }

   public synchronized void deposit(float amt)
   {
        amount+=amt;
    }

    public synchronized void withdraw(float amt)
    {
 amout-=amt;
     }

    public float checkBalance()
    {
 return amount;
    }
}

   deposit() 和 withdraw() 函数都需要这个锁来进行操作,所以当一个函数运行时,另一个函数就被阻塞。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值