介绍
这篇文章将为大家详细讲解有关Java中实现多线程的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
我们在创建的线程类的子类中重写()运行,加入线程所要执行的代码即可。
下面是一个例子:
公共类MyThread延伸线 { int数=1,数量; 公共MyThread (int num) { 数量=num; System.out.println (“创建线程“;+数量); } 公共空间run () { 而(真){ System.out.println (“线程“;+数量+“:计数“+数); 如果(+ +数==6)返回; } } 公共静态void main (String参数[]) { (int i=0;我<5;我+ +)新MyThread (i + 1) .start (); } }
Applet
线程
那么如何限制这个类必须包含这一方法呢?当然是使用接口!(虽然抽象类也可满足,但是需要继承,而我们之所以要采用这种新方法,不就是为了避免继承带来的限制吗?)
Java Runnable 强>
Runnable
公共类MyThread实现Runnable { int数=1,数量; 公共MyThread (int num) { 数量=num; System.out.println(“创建线程“;+数量); } 公共空间run () { 而(真) { System.out.println (“线程“;+数量+“:计数“+数); 如果(+ +数==6)返回; } } 公共静态void main (String参数[]) { for (int i=0;我<5,我+ +)新线程(新MyThread (i + 1) .start (); } }
线程
Runnable
ExecutorService
导入java . util . concurrent。*; 进口java.util.Date; 进口并不知道; 进口java.util.ArrayList; @SuppressWarnings (“unchecked") 公共类测试{ 公共静态void main (String [] args)把中 InterruptedException { System.out.println(“——程序开始运行——“); 日期date1=new日期(); int taskSize=5;//创建一个线程池 ExecutorService池=Executors.newFixedThreadPool (taskSize);//创建多个有返回值的任务 名单列表=new ArrayList (); for (int i=0;我& lt;taskSize;我+ +){ 可调用的c=new MyCallable (i +“;“);//执行任务并获取未来对象 未来f=pool.submit (c);//System.out.println(“,“祝辞的在;+ f.get () .toString ()); list.add (f); }//关闭线程池 pool.shutdown ();//获取所有并发任务的运行结果 对未来(f:列表){//从未来对象上获取任务的返回值,并输出到控制台 System.out.println(“,“祝辞的在;+ f.get () .toString ()); } 日期date2=new日期(); System.out.println(“——程序结束运行- - - - -,程序运行时间【“ + (date2.getTime ()——date1.getTime()) +“毫秒】“); } } 类MyCallable实现可调用的{ 私人字符串taskNum; MyCallable(字符串taskNum) { 这一点。taskNum=taskNum; } 公共对象调用()抛出异常{ System.out.println(“,“祝辞的在;+ taskNum +“任务启动“); 日期dateTmp1=new日期(); thread . sleep (1000); 日期dateTmp2=new日期(); 长时间=dateTmp2.getTime ()——dateTmp1.getTime (); System.out.println(“,“祝辞的在;+ taskNum +“任务终止“); 返回taskNum +“任务返回运行结果,当前任务时间【“+时间+“毫秒】“; } }
<强> 强>
执行人
公共静态ExecutorService newFixedThreadPool (int nThreads)
公共静态ExecutorService newCachedThreadPool执行()
公共静态ExecutorService newSingleThreadExecutor ()
执行人
公共静态ScheduledExecutorService newScheduledThreadPool (int corePoolSize)
计时器ExecutoreService
关于Java中实现多线程的方法有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。