多线程
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() 函数都需要这个锁来进行操作,所以当一个函数运行时,另一个函数就被阻塞。