创建线程
创建一个线程主要有以下几种方法:
-
-
Runnable:实现Runnable接口
-
Callable:实现Callable接口
继承Thread类创建线程
是将一个类声明为Thread的子类,这个子类应该重写Thread类的run方法,然后实例化这个子类对象并调用start方法。Thread类本质上是实现了Runnable接口的一个实例。
public class TestThread extends Thread{
实现Runnable接口
如果一个类已经继承了其他类,那么可以通过实现Runnable接口,重写run方法,然后以实现Runnable接口的对象作为参数创建Thread类的对象,调用Thread对象的start方法,new Thread(runnable).start() 。推荐使用这个方法,可以避免单继承的弊端。
黄牛抢票的例子
// 此处并发,多个线程公用一个变量,不安全
public class TestThread4 implements Runnable {
private int ticket = 10;
龟兔赛跑的例子:
public class Race implements Runnable {
private String winner;
实现Callable接口
-
实现Callable接口,需要返回值类型
-
重写call方法,需要抛出异常
-
创建目标对象
-
创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
-
提交执行:Future<Boolean> result1 = ser.submit(t1);
-
获取结果:boolean r1= result1.get();
-
关闭服务: ser.shutdownNow();
public class TestCallable implements Callable<Boolean> {
private int ticket = 10;
浙公网安备 33010602011771号