2021年3月4日星期四

Java并发编程之线程的创建

简介

线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。

Java中创建线程的方式有多种如继承Thread类、实现Runnable接口、实现Callable接口以及使用线程池的方式,线程池将在后面文章中单独介绍,这里先介绍另外三种方式。

继承Thread类

优点:在run方法里可以用this获取到当前线程。

缺点:由于Java不支持多继承,所以如果继承了Thread类后就不能再继承其他类。

public class MyThread extends Thread { /**  * 线程要执行的任务  */ @Override public void run() {  System.out.println("do something..."); } public static void main(String[] args) {		//创建线程  MyThread myThread = new MyThread();	//启动线程  myThread.start();	 }}

实现Runnable接口

优点:实现Runnable接口后不影响继承其他类,以及有利于多个线程资源共享。

缺点:获取当前线程需要调用Thread.currentThread()。

public class MyThread implements Runnable {  /**  * 线程要执行的任务  */ @Override public void run() {  System.out.println("do something..."); } public static void main(String[] args) {	//创建两个线程,并指定相同的任务	Thread thread1 = new Thread(new MyThread());  Thread thread2 = new Thread(new MyThread());	//启动线程  thread1.start();  thread2.start(); }}

实现Callable接口

优缺点类似于实现Runnable接口,但是实现Callable接口可以有返回值。

public class MyThread implements Callable<String> { /**  * 线程要执行的任务,并且具有返回值  */ @Override public String call() throws Exception {  System.out.println("do something...");  Thread.sleep(3000);  return "我是返回值"; } public static void main(String[] args) throws ExecutionException, InterruptedException {	//创建异步任务  FutureTask<String> futureTask = new FutureTask(new MyThread());	//启动线程  new Thread(futureTask).start();	//阻塞等待线程执行完成并返回结果  String result = futureTask.get();  System.out.println(result); }}








原文转载:http://www.shaoqun.com/a/605573.html

跨境电商:https://www.ikjzd.com/

知无不言:https://www.ikjzd.com/w/1308

雨果网:https://www.ikjzd.com/w/1307


简介线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。Java中创建线程的方式有多种如继承Thread类、实现Runnable接口、实现Callable接口以及使用线程池的方式,线程池将在后面文章中单独介绍,这里先介绍另外三种方式。继承Thread类优点:在run方法里可以用this获取到当前线程。缺点:
跨境通电子商务平台:https://www.ikjzd.com/w/1329.html
shopyy:https://www.ikjzd.com/w/1661
海拍客:https://www.ikjzd.com/w/1742
口述:为了他倾尽了所有他却为了钱抛弃我:http://lady.shaoqun.com/m/a/134125.html
亚马逊UPC/EAN如何申请豁免? 简单几步就搞定 :https://www.ikjzd.com/home/122582
正域跨境:https://www.ikjzd.com/w/1910

没有评论:

发表评论