java dll is多线程_Java实现多线程--四种方法
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实现多线程--四种方法相关推荐
- java list 遍历效率_Java遍历List四种方法的效率对比
Java遍历List的方法主要有: for eachjava for(bject o :list)node { 数组 }oop Iterator 性能 Iterator iter = list.ite ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 参考文章: (1)Java解决Hash(散列)冲突的四种方法--开放地址法 ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- java连接sql server2008_java连接sql-server-2008的四种方法
<java连接sql-server-2008的四种方法>由会员分享,可在线阅读,更多相关<java连接sql-server-2008的四种方法(11页珍藏版)>请在人人文库网上 ...
- java ref 应用类型_Java中的四种引用类型比较
1.引用的概念 引用这个概念是与JAVA虚拟机的垃圾回收有关的,不同的引用类型对应不同的垃圾回收策略或时机. 垃圾收集可能是大家感到难于理解的较难的概念之一,因为它并不能总是毫无遗漏地解决Java运行 ...
- 高效开发:java对象转化成String类型的四种方法
方法1:采用 Object#toString()方法 请看下面的例子: Object object = getObject(); System.out.println(object.toString( ...
- JAVA如何在线程中加锁(四种方法)
JAVA多线程锁 线程的生命周期 总共六种状态,可归结为五种,线程的最终是死亡,阻塞不是最终状态,只是一个临时状态.只有调用了start方法,线程才进入就绪阶段. //新生 NEW, //运行 ...
- Java中保留n位小数的四种方法
package CodeJava_Leet;import java.math.BigDecimal; import java.text.DecimalFormat; import java.text. ...
- java:去除数组重复元素的四种方法
方法1: 需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组.方法System.arraycopy(被复制的数组,起始下标,接收的新 ...
最新文章
- Thinkphp5.0快速入门笔记(3)
- matlab制作以太网数据接收上位机_Python制作串口通讯上位机
- 02: MySQL的安装与基本配置
- 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)
- 符合WEB标准的div+css导航下拉菜单
- Apache Spark中的自定义日志
- java与lisp_javalisp
- cmstop框架中的js设计content.js
- 自制 QQ游戏 连连看 外挂 ~~
- 55.函数模板指针匹配(模板自动匹配*多的)
- 嵌入式实时操作系统的可裁剪性及其实现
- 从二叉搜索树到平衡二叉搜索树
- 《EDA技术与Verilog HDL设计》第4、5 章读书笔记与总结
- 100行python代码实现细胞自动机(康威生命游戏)
- IP修改后自动还原(IP地址无法修改)
- dubbo 在centos7下安装
- 计算机视觉——Harris角点检测(课堂实验)
- 如何在长期地学习和工作中保持精力充沛?
- 目标检测---IoU计算公式
- 关于av_freep