java多线程 Runnable接口

扩展Thread的类不能是其他类的子类(即,如果你的类已经有一个不用于Object的超类,是不能选择扩展Thread的),所以java提供了Runnable接口,而且它被设计为和一个单独的Thread对象一起使用。如果一个对象是一个Runnable对象,则它可以作为一个线程运行。

 

接口

java.lang.Runnable

目的

这个接口定义了必须被所有线程遵守的协议

方法

void run()  是这个接口的唯一方法

 

 

import java.io.*;

public class RuntwoThreads {

public static void main(String[] args)

throws InterruptedException{

Thread one = new Thread(new HelloOne());

one.start();

NumberCruncher nc = new NumberCruncher();

Thread two = new Thread(nc);

two.start();

one.join();

nc.end();

}

}

 

class HelloOne implements Runnable{

public void run(){

try{

System.out.print("what is your name?");

BufferedReader br = 

new BufferedReader(

new InputStreamReader(System.in));

String name = br.readLine();

System.out.println("hello" + name);

}catch(IOException ioe){

System.out.println(ioe.getMessage());

}

}

}

 

class NumberCruncher implements Runnable{

private static boolean stopflag = false;

public void run(){

try{

int i = 1;

double d = 0;

while(!stopflag){

d = Math.log(i++);

Thread.currentThread().sleep(1);

}

System.out.println(

"The log of " + i + " is " + d);

}catch(InterruptedException ie){

System.out.println(ie.getMessage());

}

}

public void end(){

stopflag = true;

}

}

关于如何正确的终止线程
推荐方法是:在线程类里定义一个实例变量(static)作为指示是否终止,确保这个变量本身不受来自其他线程的并行访问的影响,可以通过关键字volatile来声明这个变量或者通过将所有访问它的代码声明为synchronized来做到这一点;在这个线程中,经常检查这个变量的值。当标志指出这个线程应该结束时,应尽快冲run方法返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值