Java 并发编程中如何创建线程
简介
线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。
Java中创建线程的方式有多种如继承Thread类、实现Runnable接口、实现Callable接口以及使用线程池的方式,线程池将在后面文章中单独介绍,这里先介绍另外三种方式。
继承Thread类
优点:在run方法里可以用this获取到当前线程。
缺点:由于Java不支持多继承,所以如果继承了Thread类后就不能再继承其他类。
publicclassMyThreadextendsThread{ /** *线程要执行的任务 */ @Override publicvoidrun(){ System.out.println("dosomething..."); } publicstaticvoidmain(String[]args){ //创建线程 MyThreadmyThread=newMyThread(); //启动线程 myThread.start(); } }
实现Runnable接口
优点:实现Runnable接口后不影响继承其他类,以及有利于多个线程资源共享。
缺点:获取当前线程需要调用Thread.currentThread()。
publicclassMyThreadimplementsRunnable{ /** *线程要执行的任务 */ @Override publicvoidrun(){ System.out.println("dosomething..."); } publicstaticvoidmain(String[]args){ //创建两个线程,并指定相同的任务 Threadthread1=newThread(newMyThread()); Threadthread2=newThread(newMyThread()); //启动线程 thread1.start(); thread2.start(); } }
实现Callable接口
优缺点类似于实现Runnable接口,但是实现Callable接口可以有返回值。
publicclassMyThreadimplementsCallable{ /** *线程要执行的任务,并且具有返回值 */ @Override publicStringcall()throwsException{ System.out.println("dosomething..."); Thread.sleep(3000); return"我是返回值"; } publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException{ //创建异步任务 FutureTask futureTask=newFutureTask(newMyThread()); //启动线程 newThread(futureTask).start(); //阻塞等待线程执行完成并返回结果 Stringresult=futureTask.get(); System.out.println(result); } }
以上就是Java并发编程中如何创建线程的详细内容,更多关于Java创建线程的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。