一、java实现多线程的方式
1、继承Thread
2、实现 Runnable和Future、有返回值
Callable
A Future
计算的结果。 提供方法来检查计算是否完成,等待其完成,并检索计算结果。
二、练习
package muIo;
/**
*
* @function: Thread
* @desc:
* @author: LuLijun
* @date: 2019年3月11日 下午2:13:36
*/
public class ExtendsThread extends Thread{
public ExtendsThread(){
System.out.println("线程:"+Thread.currentThread().getName()+"正在启动!");
//修改主线程的名称
Thread.currentThread().setName("MAIN");
System.out.println("线程:"+Thread.currentThread().getName()+"正在启动!");
}
@Override
public void run(){
//for(int i=0;i<100000;i++){
//System.out.println("线程:"+name+",----"+i);
//System.out.println("线程名称:"+Thread.currentThread().getName()+",线程id:"+Thread.currentThread().getId()+"---"+i);
//}
}
}
---------------------------------------
package muIo;
/**
*
* @function:多线程----runnable练习
* @desc:
* @author: LuLijun
* @date: 2019年3月11日 下午1:26:39
*/
public class MuIO implements Runnable{
String name;
public MuIO(){
System.out.println("线程:"+Thread.currentThread().getName()+"正在启动!");
}
public MuIO(String threadName){
this.name=threadName;
System.out.println("线程:"+threadName+"正在启动!");
}
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<1000;i++){
//System.out.println("线程:"+name+",----"+i);
System.out.println("线程名称:"+Thread.currentThread().getName()+",线程id:"+Thread.currentThread().getId()+"---"+i);
}
}
}
---------------------------------------------------------
package muIo;
import org.junit.Test;
public class MuIOTest {
// implements Runnable
@Test
public void thread01() {
// TODO Auto-generated method stub
//MuIO mio1=new MuIO("线程1");
//MuIO mio2=new MuIO("线程2");
MuIO mio=new MuIO();
//mio1.run();
//mio2.run();
//开启线程数
new Thread(mio,"线程1").start();
new Thread(mio,"线程2").start();
}
// extends Thread
@Test
public void threadTest(){
ExtendsThread ex=new ExtendsThread();
ExtendsThread ex2=new ExtendsThread();
//设置线程就绪状态
ex.start();
//设置线程名称
ex.setName("xc1");
ex2.start();
ex2.setName("xc02");
}
}