美文网首页
Java并发编程

Java并发编程

作者: 廖宇亮 | 来源:发表于2019-03-10 11:57 被阅读0次

1、创建线程的方法

1.1、继承Thread类

public class Demo1 extends Thread {//1、继承Thread类   

public Demo1(String name) {        super(name);}

@Override

public void run() { }//2、重写Thread类型run方法

public static void main(String[] args) {    

Demo1 d1 = new Demo1("first-thread");//3、创建线程   

 d1.start();//4、调用start方法,启动线程

} }

1.2、实现Runnable接口

public class Demo2 implements Runnable {//1、实现runnable接口

@Override

public void run() {}//2、实现run方法

public static void main(String[] args) {

Thread thread = new Thread(new Demo2());//3、创建人物Demo2,并把任务赋给创建的线程

thread.start();//4、调用start方法启动线程

  } }

1.3、匿名内部类的方式

1.4、 带返回值并可抛出异常的线程

public class Demo4 implements Callable<Integer> {//1、实现Callable接口,并指定返回值类型

public static void main(String[] args) throws Exception {

Demo4 d = new Demo4();//3、创建线程执行的任务

FutureTask<Integer> task = new FutureTask<>(d);//4、创建线程执行返回值的接收器

Thread t = new Thread(task);//5、创建线程

t.start();//6、启动线程

Integer result = task.get();//7、获取线程的返回值

System.out.println("线程执行的结果为:" + result); }

@Override

public Integer call() throws Exception {//2、重写call方法,该方法可抛出异常,并有返回值

    Thread.sleep(3000);

    return 1;

}}

1.5、定时器(quartz)

    定时器的创建主要使用的是java.util.Timer;java.util.TimerTask;

public class Demo5 {

public static void main(String[] args) {

Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override public void run() {

    // 实现定时任务 System.out.println("timertask is run");

    } }, 0, 1000);

} }

1.6、线程池方法

public class Demo6 {

public static void main(String[] args) {

ExecutorService threadPool = Executors.newCachedThreadPool();//1、创建一个可以动态调整大小的线程池

for (int i = 0; i < 1000; i++) {

threadPool.execute(new Runnable() {//2、为线程赋执行任务

    @Override

    public void run() {

        System.out.println(Thread.currentThread().getName());

    }

});

}

threadPool.shutdown();//3、关闭线程池

} }

2、线程的详细状态

线程终止

    jdk1.6以前使用线程的stop方法强制终止线程,该方式不推荐使用。jdk1.6以后使用interrupt()方式。实现方式如下

@Override public void run() {

    while(!interrupted()) {//2、判断线程为终止状态后,结束线程的循环,达到优雅终止线程。

        System.out.println(getName() + "线程执行了 .. ");

    }

public static void main(String[] args) {

    Demo1 d1 = new Demo1("first-thread");

    d1.start(); 

    // d1.stop();

    d1.interrupt();//1、线程运行中修改线程状态为终止

}

3、线程类型

3.1、守护线程

    线程可以通过setDaemon(true)方法的方式将线程,设为守护线程,守护线程在主线程执行结束后,自动结束。

相关文章

网友评论

      本文标题:Java并发编程

      本文链接:https://www.haomeiwen.com/subject/vbdupqtx.html