时间:2021-05-20
线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。
Java中创建线程的方式有多种如继承Thread类、实现Runnable接口、实现Callable接口以及使用线程池的方式,线程池将在后面文章中单独介绍,这里先介绍另外三种方式。
优点:在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接口后不影响继承其他类,以及有利于多个线程资源共享。
缺点:获取当前线程需要调用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(); }}优缺点类似于实现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); }}以上就是Java 并发编程中如何创建线程的详细内容,更多关于Java 创建线程的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java高并发中volatile的实现原理摘要:在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的syn
什么是线程?提到“线程”总免不了要和“进程”做比较,而我认为在Java并发编程中混淆的不是“线程”和“进程”的区别,而是“任务(Task)”。进程是表示资源分配
Java并发编程系列【未完】:•Java并发编程:核心理论•Java并发编程:Synchronized及其实现原理•Java
前言CountDownLatch和CyclicBarrier两个同为java并发编程的重要工具类,它们在诸多多线程并发或并行场景中得到了广泛的应用。但两者就其内
一、多线程介绍在编程中,我们不可逃避的会遇到多线程的编程问题,因为在大多数的业务系统中需要并发处理,如果是在并发的场景中,多线程就非常重要了。另外,我们在面试的