1 /**

2 * 第一种3 * 继承thread类 重写 run方法4 * 调用start方法,启动线程5 *@authorsunshine6 */

7

8 /**

9 * 第二种实现runnable接口,重写run方法10 * 接口实现类的实例作为target参数,传入带参的构造方法,调用start方法启动线程11 *@authorsunshine12 */

13

14 /**

15 * 第三种通过Callable和FutureTask实现线程16 * 1:创建Callable类的实现类,实现call方法17 * 2:创建Callable实现类的实现,用FutureTask来包装实现的对象18 * 3:将FutureTask对象作为target参数传递给Thread构造方法19 * 4:调用start方法,启动线程20 *@authorsunshine21 */

22

23 /**

24 * 第四种--通过线程池25 * ExecutorService是Java中对线程池定义的一个接口26 * 1:创建类,实现runnbale接口27 * 2:设置线程数量28 * 3:根据线程数量创建线程执行器29 * 4:执行器,执行线程30 * 5:关闭线程池31 *32 * 这个方法和直接实现Runable比33 * 这个方法 实现Runable接口34 * 然后实例化对象,将参数传递给线程执行器,进行执行35 *@authorsunshine36 */

37

38 ------------------第一种:通过继承Thread类---------

39 packagecom.www.thread;40

41 /**

42 * 第一种43 * 继承thread类 重写 run方法44 * 调用start方法,启动线程45 *@authorsunshine46 */

47 public class Thread1ByExtendsThread extendsThread{48 49     //重写run方法

50     public voidrun(){51         //在这里 获取当前线程的名字

52 System.out.println(Thread.currentThread().getName());53 }54 55     public  static voidmain(String[]  args){56         Thread1ByExtendsThread thread1 = newThread1ByExtendsThread();57         thread1.setName("线程1--通过实现Thread类");58         //启动线程

59 thread1.start();60 System.out.println(Thread.currentThread().toString());61 }62 }63

64

65

66        ------------------第二种:通过实现Runnablle接口---------

67 packagecom.www.thread;68

69 /**

70 * 第二种实现runnable接口,重写run方法71 * 接口实现类的实例作为target参数,传入带参的构造方法,调用start方法启动线程72 *@authorsunshine73 */

74 public classThread2ByImplRunable{75   public static voidmain(String[]  args){76     Thread t = new Thread(newMyThread());77     t.start();78   }79 }80

81 class MyThread implementsRunnable{82   @Override83   public voidrun() {84     System.out.println("通过实现Runnbale接口创建的线程"+Thread.currentThread().getName());85   }86 }87

88

89

90

91        ------------------第三种:通过实现CallAble接口和FutureTask包装器---------

92 packagecom.www.thread;93

94 importjava.util.concurrent.Callable;95 importjava.util.concurrent.FutureTask;96

97 /**

98 * 第三种通过Callable和FutureTask实现线程99 * 1:创建Callable类的实现类,实现call方法100 * 2:创建Callable实现类的实现,用FutureTask来包装实现的对象101 * 3:将FutureTask对象作为target参数传递给Thread构造方法102 * 4:调用start方法,启动线程103 *@authorsunshine104 */

105 public classThread3ByCallableAndFutureTask {106  public static voidmain(String[]  args){107   Callable callAble = new CallImpl();108   FutureTask task = new FutureTask(callAble);109   Thread t = newThread(task);110   System.out.println(Thread.currentThread().getName());111   t.start();112   }113 }114

115 class CallImpl implements Callable{116   @Override117   public Object call() throwsException {118   System.err.println(Thread.currentThread().getName()+"我是通过实现callable" +

119   "接口通过FutureTask包装器来实现线程");120   return null;121 }122 }123

124

125

126

127

128        ------------------第四种:通过线程池---------

129 packagecom.www.thread;130

131 importjava.util.concurrent.Executor;132 importjava.util.concurrent.ExecutorService;133 importjava.util.concurrent.Executors;134

135 /**

136 * 第四种--通过线程池137 * ExecutorService是Java中对线程池定义的一个接口138 * 1:创建类,实现runnbale接口139 * 2:设置线程数量140 * 3:根据线程数量创建线程执行器141 * 4:执行器,执行线程142 * 5:关闭线程池143 *144 * 这个方法和直接实现Runable比145 * 这个方法 实现Runable接口146 * 然后实例化对象,将参数传递给线程执行器,进行执行147 *@authorsunshine148 */

149 public classThread4ByThreadPool {150     public static  int POOL_NUM = 5;//定义最大线程数为5

151     public static voidmain(String[]  args){152         ExecutorService service =Executors.newFixedThreadPool(POOL_NUM);153         for(int i = 0; i

161 class MyThread4 implementsRunnable{162 @Override163     public voidrun() {164         System.out.println("通过线程池创建的线程"+Thread.currentThread().getName());165 }166 167 }168

169

java dll is多线程_Java实现多线程--四种方法相关推荐

  1. java list 遍历效率_Java遍历List四种方法的效率对比

    Java遍历List的方法主要有: for eachjava for(bject o :list)node { 数组 }oop Iterator 性能 Iterator iter = list.ite ...

  2. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  3. Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 参考文章: (1)Java解决Hash(散列)冲突的四种方法--开放地址法 ...

  4. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  5. java连接sql server2008_java连接sql-server-2008的四种方法

    <java连接sql-server-2008的四种方法>由会员分享,可在线阅读,更多相关<java连接sql-server-2008的四种方法(11页珍藏版)>请在人人文库网上 ...

  6. java ref 应用类型_Java中的四种引用类型比较

    1.引用的概念 引用这个概念是与JAVA虚拟机的垃圾回收有关的,不同的引用类型对应不同的垃圾回收策略或时机. 垃圾收集可能是大家感到难于理解的较难的概念之一,因为它并不能总是毫无遗漏地解决Java运行 ...

  7. 高效开发:java对象转化成String类型的四种方法

    方法1:采用 Object#toString()方法 请看下面的例子: Object object = getObject(); System.out.println(object.toString( ...

  8. JAVA如何在线程中加锁(四种方法)

    JAVA多线程锁 线程的生命周期 ​ 总共六种状态,可归结为五种,线程的最终是死亡,阻塞不是最终状态,只是一个临时状态.只有调用了start方法,线程才进入就绪阶段. //新生 ​ NEW, //运行 ...

  9. Java中保留n位小数的四种方法

    package CodeJava_Leet;import java.math.BigDecimal; import java.text.DecimalFormat; import java.text. ...

  10. java:去除数组重复元素的四种方法

    方法1: 需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组.方法System.arraycopy(被复制的数组,起始下标,接收的新 ...

最新文章

  1. Thinkphp5.0快速入门笔记(3)
  2. matlab制作以太网数据接收上位机_Python制作串口通讯上位机
  3. 02: MySQL的安装与基本配置
  4. 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)
  5. 符合WEB标准的div+css导航下拉菜单
  6. Apache Spark中的自定义日志
  7. java与lisp_javalisp
  8. cmstop框架中的js设计content.js
  9. 自制 QQ游戏 连连看 外挂 ~~
  10. 55.函数模板指针匹配(模板自动匹配*多的)
  11. 嵌入式实时操作系统的可裁剪性及其实现
  12. 从二叉搜索树到平衡二叉搜索树
  13. 《EDA技术与Verilog HDL设计》第4、5 章读书笔记与总结
  14. 100行python代码实现细胞自动机(康威生命游戏)
  15. IP修改后自动还原(IP地址无法修改)
  16. dubbo 在centos7下安装
  17. 计算机视觉——Harris角点检测(课堂实验)
  18. 如何在长期地学习和工作中保持精力充沛?
  19. 目标检测---IoU计算公式
  20. 关于av_freep

热门文章

  1. vue.js 深度监测
  2. 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
  3. BZOJ 3270: 博物馆 [概率DP 高斯消元]
  4. Spring中的容器
  5. 使用 Visual Studio Online 进行协同开发
  6. 通过WebRTC实现实时视频通信(三)
  7. ActiveXObject函数详解
  8. [wp7游戏]wp7~~飞行射击精品游戏~~集合贴
  9. effective C++ 条款 47:使用traits classes表现类型信息
  10. wxPython 笔记(3)基本结构