总结一下多线程的建立体式格局,多线程的完成一共四种要领,接下来将详谈一下建立的体式格局
1、继续Thread类,然后覆写run()要领
2、完成Runnable接口,然后覆写run()要领
3、完成callable接口,然后覆写call<v>要领
4、线程池(背面特地说,由于较庞杂)
注重:不管运用哪一种体式格局建立线程,启动线程一概运用Thread类供应的start()要领。
1.继续Thread类覆写run要领
class MyThread extends Thread { private String title; private int ticket = 20; public MyThread(String title) { this.title = title; } public void run() { //放每一个线程的子使命 while (ticket > 0) { System.out.println("当前线程为"+title+",还剩下"+ticket--+"票"); } } } public class ThreadTest { public static void main(String[] args) { MyThread myThread1 = new MyThread("黄牛A"); MyThread myThread2 = new MyThread("黄牛B"); MyThread myThread3 = new MyThread("黄牛C"); myThread1.start(); myThread2.start(); myThread3.start(); } }
2.完成Runnable接口覆写run要领
class MyRunnable implements Runnable{ @Override public void run() { for(int i =0;i <10;i++){ System.out.println(Thread.currentThread().getName()+"、i="+i); } } } public class RunnableTest { public static void main(String[] args) { Runnable runnable =new MyRunnable(); //向上转型 new Thread(runnable,"线程A").start(); //设置线程名字 new Thread(runnable).start(); //没有设置线程名字,则是体系默许从 Thread-(0,1,2...) Thread thread1 = new Thread(runnable); thread1.setName("线程B"); //挪用setName()设置名字 thread1.start(); } }
这里呢趁便引见了线程名字的建立3种:
(1)在括号后直接加名字
(2)挪用setName()设置名字
(3)不设置名字,则是体系默许从Thread-(0,1,2....)
3.完成Callable接口覆写call<V>要领
class MyCallable implements Callable<String>{ private int ticket =20; @Override public String call() throws Exception { while(ticket > 0){ System.out.println(Thread.currentThread().getName()+"还剩下"+ticket--+"票"); } return "票卖完了,再会"; } } public class CallableTest { public static void main(String[] args) throws ExecutionException, InterruptedException { //发生Callable对象 MyCallable myCallable = new MyCallable(); //发生FutureTask对象 FutureTask futureTask = new FutureTask(myCallable); Thread thread = new Thread(futureTask); thread.start(); System.out.println(futureTask.get()); //吸收Callable对象的返回值 } }
1.先发生Callable对象
2.发生FutureTask对象
3.建立Thread传入FutureTask对象
4. 吸收Callable接口的返回值是Future中get()要领
三个建立线程的体式格局比较
1.继续Thread类有单继续范围,相对而言完成Runnable接口越发天真,而且Thread类自身也完成了Runnable接口辅佐实在线程类
2.完成Runnable接口能够更好的完成顺序同享的观点
3.Callable接口就是须要有返回值时用到
以上内容如有显著毛病请指出,不胜感激。感谢!
更多相干内容请接见ki4网:JAVA视频教程
以上就是多线程-线程的建立的细致内容,更多请关注ki4网别的相干文章!