首页 > 技术文章 > 多线程02

kingjie 2014-12-30 15:40 原文

进程: 是一个正在执行中的程序
每一个进程都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制
线程 就是进程中的一个独立的控制单元,线程在控制着进程的执行
jvm vm 启动的时候有一个进程java.exe 该进程中至少一个线程负责java程序的执行。而且这个西拿出一些的代码存在于


线程的定义
定义一个类 extend Threed 重写 three的润()方法,调用线程的start()方法 多线程的随机性

run()的覆盖
Thread类用于描述线程。该类就定义了一个功能,用于存存储要运行的代码。该存储功能就是run()。
Thread 类中的run()方法,用于存储线程要运行的代码。

this.getName 获取Thread 名称
super (name) 赋值线程名称
static Thread currentThread():获取当前线程对象
setName 设置名称

Runnable 接口
实现Runnable接口
覆盖Runnable接口中的run方法
通过Thread类的建立线程对象
间Runnable接口的子类对象作为实际参数传递给Thread类的构造函数
调用Thread类的start方法开线程并调用Runnable接口的子类的run方法

 

实现方式和继承方式有什么区别
实现方式 好处在于避免的单继承的局限性 在定义的线程的时候 建议是使用实现方式

区别 继承 Thread 线程的代码存放在Thread子类的run方法中
实现Runnable 线程代码存放在接口的子类的额run方法中
synchronized(对象){} 同步代码块 [锁]
同步的前提
1 必须要有2个或者2个以上的线程
2 必须是多个线程使用同一个锁
必须保证同步中只有一个线程在运行
好处 :多线程的安全问题 弊端 :多个线程都需要判断锁 较为消耗锁资源


多线程 问题查找:
1明确哪些代码是多线程运行代码
2明确贡献数据
3多线程运行代码中哪些数据是操作共享数据的
同步代码块 和 同步函数-》放在函数的修饰符上
synchronized

同步函数用的是哪一个函数?
同步函数需要被对象调用。那么函数都有一个所属对象引用。 就是this 。所以同步函数使用的锁就是this的锁

同步函数如果被static 修饰 使用的锁是 Class的锁

死锁 同步中嵌套同步会产生死锁

 

推荐阅读