Java中的多线程(1)
来源:互联网 发布:js读取div内容 编辑:程序博客网 时间:2024/05/18 01:35
前言
Java中实现多线程的方法大体上有三种, 按照平常的使用来说可以分为两类, 一类是没有返回值的, 另一类是可以获得返回值的, 今天在此总结一下.
一, 不需要获得返回值
a. 继承Thread类:
实现多线程的步骤
- 让其继承Thread类;
- 然后重写其中的run方法;
- 实现该类的对象;
- 调用该对象的start方法, 启动线程;
- 一个线程对象代表这一个线程, 如果要启动多条线程, 请实现多个对象
代码如下:
public class ThreadMain01 { public static void main(String[] args) { ThreadTest t1 = new ThreadTest("01"); ThreadTest t2 = new ThreadTest("02"); t1.start(); t2.start(); }}class ThreadTest extends Thread { ThreadTest() {} ThreadTest(String name) { setName(name); } public void run() { System.out.println(getName()+" -- is running"); }}
b. 实现Runnable接口:
其实看源码可以知道, Thread类就是实现了Runnable接口重写了其中的run方法, 推荐使用这种方法, 减少了代码的耦合性.
实现步骤:
- 实现Runnable接口, 重写run方法;
- 创建一个实例对象;
- 创建一个Thread的实例对象, 并将Runnable的子类对象作为参数, 传入到Thread的实例对象中;
- Thread对象调用start方法启动线程,
代码如下
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadMain02 { public static void main(String[] args) { ThreadRunnable01 tr = new ThreadRunnable01(); new Thread(tr).start(); new Thread(tr).start(); }}class ThreadRunnable01 implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()+" -- is running"); }}
上面是一种通过Thread类来实现多线程的实现步骤, 在平常的使用中我们通常使用线程池来开启多线程, 下面就用到了Executor框架;
- 实现Runnable接口, 重写run方法;
- 创建线程池, 获得 ExecutorService 对象;
- 执行execute方法, 或者submit方法(Runnable的子类对象作为参数传入), 每调用一次相当于调用了一条新的线程执行任务;
代码如下
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadMain02 { public static void main(String[] args) { ThreadRunnable01 tr = new ThreadRunnable01(); new Thread(tr).start(); new Thread(tr).start(); ExecutorService exe = Executors.newFixedThreadPool(5); for(int i=0; i<5; i++) { //exe.submit(tr); exe.execute(tr); } }}class ThreadRunnable01 implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()+" -- is running"); }}
阅读全文
0 0
- Java中的多线程(1)
- java中的多线程(1)
- Java中的多线程浅析(1)
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java程序中的多线程
- java中的多线程
- Java中的多线程(一)
- Java 程序中的多线程
- Java中的多线程程序设计
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- 再忆Java中的多线程
- Java中的多线程
- Android开源框架Universal-Image-Loader的详情讲解
- vxworks常用API总结
- linux如何查看一段时间的日志sed和grep的使用
- Qt软件开发文档15---聊天窗口的实现(2),QTextEdit+QPainter实现聊天框自适应大小
- 对象字节数组转换工具类
- Java中的多线程(1)
- LeetCode 94 Binary Tree Inorder Traversal(Python详解及实现)
- 小程序import使用注意
- POJ2001[Shortest Prefixes]--Trie
- Redis在京东到家的订单中的使用 【转载】
- Android 两个RadioGroup实现单选的效果
- log4j.web.xml
- u-boot中:rm:无法删除 "asm":是一个目录
- 【jzoj5247】【NOIP2017提高A组模拟8.10】【计算几何】【二分答案】