Java多线程实现方案
来源:互联网 发布:世界电视直播软件 编辑:程序博客网 时间:2024/06/08 08:20
Java多线程的两种实现方案
首先,我们知道Java多线程实现的两种方案分别为:
1、继承Thread类
2、实现Runnable接口
一、继承Thread实现多线程
直接看代码实现:
package com.example.thread.one;public class ThreadDemo {public static void main(String[] args) {MyThread mThread = new MyThread();//新建线程mThread.start();//线程处于就绪状态,拿到时间片后会自动执行run()方法里面的代码块}}class MyThread extends Thread{@Overridepublic void run() {super.run();/** * 这里写需要在子线程中执行的 * 比较耗时的操作。 */System.out.println("子线程执行了比较耗时的操作");}}
问题1、为什么要重新run()方法?因为run()方法里面封装的是要被该线程执行的代码问题2、run()方法和start()方法的区别?如果直接调用run()方法就是普通的方法调用,调用start()方法是先启动线程,获取到cpu执行权后由JVM调用其中的run()方法
二、实现Runnable接口实现多线程
直接看代码实现过程:
package com.example.thread.one;public class ThreadDemo {public static void main(String[] args) {MyRunnable mRunnable = new MyRunnable();//创建线程,需要传入一个Runable对象作为参数Thread thread = new Thread(mRunnable);//线程处于就绪状态,如果分配到时间片会自动执行Runnable中的run()方法thread.start();}}class MyRunnable implements Runnable{@Overridepublic void run() {/** * 这里写需要在子线程中执行的 * 比较耗时的操作。 */System.out.println("子线程执行耗时操作");}}
三、两种实现方法的区别
实现Runnable接口带来的好处:
1、避免JAVA单继承带来的局限性。
由于JAVA是单继承的,如果当前自定义的类已经继承了一个类,就不能再继承Thread类来实现多线程了,但是,我们可以通过实现Runnable来避免这个局限性,同时JAVA还是多实现的,可以同时实现多个接口,因此实现Runnable接口更加的方便。
2、适合多个相同的程序代码去处理同一个资源的情况,把线程同程序的代码、数据有效的分离,较好的体现面向对象的设计思想。
当多个线程需要处理同一资源时,我们可以将资源在Runnable接口中定义,这样,创建Thread对象时传入相同的Runnable对象就可以实现多线程资源的共享(注:这里需要考虑多线程的线程安全问题,需要考虑同步的问题)
例如下面的代码:
package com.example.thread.one;public class ThreadDemo {public static void main(String[] args) {MyRunnable mRunnable = new MyRunnable();//创建线程,这里两个线程传入相同的Runnable对象Thread thread1 = new Thread(mRunnable);Thread thread2 = new Thread(mRunnable);//线程处于就绪状态,如果分配到时间片会自动执行Runnable中的run()方法thread1.start();thread2.start();}}class MyRunnable implements Runnable{//被多个线程共享的资源private int count = 100;@Overridepublic void run() {for (int i = 0; i < 50; i++) {System.out.println("当前的count值:" + count--);}}}
1 0
- Java多线程实现方案
- 多线程的实现方案
- 多种实现方案------------ 多线程
- 多线程实现方案
- java 多线程同步方案
- 多线程经典问题--哲学家就餐问题解决方案JAVA实现
- 多线程同步若干实现方案
- iOS中多线程实现方案
- 多线程-实现多线程的几种方案
- Java多线程-Java多线程实现
- 用内部类实现多线程的方案
- iOS中实现多线程的技术方案
- 多线程学习03-实现方案
- iOS多线程实现的几种方案
- Java 多线程(多线程的实现)
- Java 跨语言实现方案
- Java调度实现方案对比
- Java分布式锁三种实现方案
- Oracle 存储过程遇到的问题
- LayoutInflater.inflate详解
- codeForces-Longest Subsequence
- 关于java.lang.ClassNotFoundException异常
- Search Insert Position
- Java多线程实现方案
- Android如何调用第三方SO库
- NLPIR(ICTCLAS2016)对文本进行分词
- IPC 机制---多线程模式
- 模板类实现堆栈:
- 蓝桥杯 ALGO-8(线段树)
- OPENFILER模拟存储架设RAC
- IOS源码网站
- jsp登录界面(一)