Java多线程顺序执行线程

上一篇 / 下一篇  2017-05-26 17:36:27 / 个人分类:Java

    Java中控制线程的顺序目前学习了两种方式:一种是使用Java线程类提供的join方法,另外一种是使用Timer的方式控制。

第一种:使用join的方法
  代码实现:

public class ThreadTest{
public static void main(String args[]){
final Thread t1=new Thread(new Runnable(){
@Override
public void run(){
System.out.println("t1");
}
});
final Thread t2=new Thread(new Runnable(){
@Override
public void run(){
try{
t1.join();//先运行线程t1
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("t2")
}
});

final Thread t3=new Thread(new Runnable(){
@Override
public void run(){
try{
t2.join;
}
System.out.println("t2");
}
});

t1.start();
t2.start();//这里无论是哪个线程先启动都不影响执行顺序,因为t1,t2,t3的运行顺序在线程内部就定义好了。
t3.start();
}
}



第二种是自己编写一个Timer类,将线程加入到运行中,通过timer来控制线程的运行时间,只有时间到了,才运行下一个线程
   //使用Runnable接口
  public class TestSync implements Runnable{
Timer timer=new Timer();
public static void main(String args[]){
TestSync testsync=new TestSync();
Thread t1=new Thread(testsync);
Thread t2=new Thread(testsync);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();//这里启动顺序就决定了线程的运行顺序
}
@Override
public void run(){
timer.add(Thread.currentThread().getName());

}

class Timer{
private int num=0;
public synchronized void add(String name){
num++;
try{
Thread.sleep(1)
}catch(InterruptedException e){}
System.out.println(name+"你是第:"+num+"个使用Timer的线程");
}
}
}

TAG: java 多线程

 

评分:0

我来说两句

Open Toolbar