Java 并发编程初学习
来源:互联网 发布:php对比java 编辑:程序博客网 时间:2024/05/16 14:41
Java 并发编程
Runnable & Thread
java实现并发有两种方法一种是实现Runnable 另外一种是继承Thread 并且实现run()方法。
Runnable(Interface)
一个接口 只有一个无返回值无参数的run()方法
public interface Runnable { public abstract void run();}
代码示例
实现Runnable接口 交给Thread运行实现并发
package cocurrentLearning;/** * Created by teng.liu on 2017/7/25. */public class RunnableDemo implements Runnable { private int i=10; @Override public void run() { //这里写要并发的代码 System.out.println( Thread.currentThread().getName()+ " runnableDemo running: " + i--); } public static void main(String[] args) { RunnableDemo runnableDemo = new RunnableDemo(); new Thread(runnableDemo,"1").start(); new Thread(runnableDemo,"2").start(); new Thread(runnableDemo,"3").start(); }}
运行结果
2 runnableDemo runing: 91 runnableDemo runing: 103 runnableDemo runing: 8
每次运行结果顺序可能不同
Thread(class)
继承了Runnable 并且实现了start()、init()、stop()等若干方法
代码示例
package cocurrentLearning;/** * Created by teng.liu on 2017/7/25. */public class ThreadDemo extends Thread { public ThreadDemo() { super(); } public ThreadDemo(String name) { super(name); } private int i = 10; @Override public void run() { //并发逻辑需要在此处 System.out.println(Thread.currentThread().getName() + " ThreadDemo running " + i--); } public static void main(String[] args) { new ThreadDemo("01").start(); new ThreadDemo("02").start(); new ThreadDemo("03").start(); }}
运行结果
02 ThreadDemo running 1003 ThreadDemo running 1001 ThreadDemo running 10
每次运行结果顺序可能不同
区别
- Thread是类,Runnable是接口,并且Thread实现了Runnable。由于java本身 继承类和实现接口的区别,推荐使用实现Runnable
run()
方法,然后交给Thread来运行 - 资源共享的问题。通过Runnable本身不存在并发功能 需要把Runnable交给Thread来运行实现并发。对于其中的变量如上面的距离int变量i 所有线程执行完成后i Runable形式的变成8 Thread形式的还是10。如果Thread要实现资源共享需要把其中的资源变量声明为
static
Thread.start()
Thread最终执行的代码是run 但是可以看到我们在示例中并没有调用Thread的run()
而是调用了Thread的strat()
方法。调用star()
方法后线程进入就绪状态并不是立即执行而是系统为其分配CPU。
参考链接
http://www.cnblogs.com/DreamSea/archive/2012/01/11/JavaThread.html
https://www.dexcoder.com/dexcoder/article/3081
阅读全文
0 0
- Java 并发编程初学习
- Java初学习 - 并发有关的小结
- Java Socket编程初学
- Java编程思想初学
- 初学 java 编程
- Java并发编程 并发容器
- JAVA并发编程--并发模式
- JAVA并发-并发编程概述
- java并发编程----并发模型
- 【Java并发编程】并发集合
- 【Java并发编程】并发编程大合集
- 【Java并发编程】并发编程大合集
- 【Java并发编程】并发编程大合集
- 【Java并发编程】并发编程大合集
- 【Java并发编程】并发编程大合集
- java并发编程-- 并发编程大合集
- Java并发编程-并发编程知识点总结
- 【Java并发编程】并发编程大合集
- 微信小程序周报(第九期)-极乐科技
- Windows平台下MySQL常用操作与命令
- python操作数据库之pymysql
- Maven私服问题汇总
- HDU6060 RXD and dividing
- Java 并发编程初学习
- 手把手教你写Sublime中的Snippet(转自: Andrew_liu)
- 简述基于EDA技术的FPGA设计
- MySQL优化笔记
- 相对路径和绝对路径的总结
- iOS应用之间跳转 本篇博文将涉及到以下知识点: app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二、应用跳转原理 相信从一个应用跳转到另一个应用
- Tip12 重写Equals时也要重写GetHashCode
- hbase
- 各项目遗留的问题