1.java中join方法保证,多线程执行的时候,主线程不会立即执行,而是等到子线程执行完成之后,在进行主线程。
代码如下:
首先创建三个自己的线程;
package cn.com.sjzxy.edu.method;
public class MyThread2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1000);
System.out.println("我是 thread 2");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
然后:
package cn.com.sjzxy.edu.method;
public class CurrentJoinTest {
public static void main(String[] args) throws InterruptedException {
Thread t1=new Thread(new MyThread1());
t1.start();
// t1.join();
Thread t2=new Thread(new MyThread2());
t2.start();
// t2.join();
Thread t3=new Thread(new MyThread3());
t3.start();
//t3.join();
}
}
执行后是:
我是 thread 1
我是 thread 3
我是 thread 2
去掉注释之后是:
我是 thread 1
我是 thread 2
我是 thread 3
2. ExecutorService exec=Executors.newSingleThreadExecutor();
代码如下:
首先创建三个自己的线程;
package cn.com.sjzxy.edu.method;
public class MyThread2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1000);
System.out.println("我是 thread 2");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
然后:
package cn.com.sjzxy.edu.method;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CuurentExecutorTest {
public static void main(String[] args) {
Thread t1=new Thread(new MyThread1());
Thread t2=new Thread(new MyThread2());
Thread t3=new Thread(new MyThread3());
ExecutorService exec=Executors.newSingleThreadExecutor();
exec.submit(t1);
exec.submit(t2);
exec.submit(t3);
exec.shutdown();
}
}
执行后是
我是 thread 1
我是 thread 2
我是 thread 3
欢迎关注我的公众号,领取免费干货学习资源
并发编程