|
[笔记]java学习笔记11--线程
1 进程:系统并发的任务,宏观并行,微观串行.
线程:是在进程内部再划分出的顺序执行的流程.
进程是独立的数据空间,线程是共享的数据空间.
对操作系统来说Java的虚拟机就是一个进程,对于单CPU系统来说,某一个时刻只可能由一个线程在运行.
2 一个线程由三部分组成:
(1)cpu: cpu分给线程的时间片. //何时做
(2)data:线程数据. //对谁做操作.
(3)code:线程代码,写在run方法中 //做什么
3 线程的共享4种情况:
(1)不共享代码,不共享数据
(2)不共享代码,共享数据 //IE浏览器
(3)共享代码,不共享数据
(4)共享代码,共享数据
4 thread对象表示一个线程,线程对象与其他对象不同的是线程对象能够到底层去申请管理一个线程资源.只有 对线程对象调用start()方法才是到底层去申请管理一个线程资源。进程的调度是os(操作系统决定的).
5 写一个线程的实现有两个办法:
第一种:写一个类继承Thread类.
class MyThreadA extends Thread{
public void run(){}
}
第二种:写一个类实现Runnable接口
class MyThreadB implements Runnable{
public void run(){}
}
public static void main(String [] args){
Thread t1=new MyThreadA();
Thread t2=new Thread(new MyThreadB());
t1.start(); //启动线程
t2.start();
}
6 线程的7状态图见图片.
7 锁标记:每个对象有且只有一个锁标记.只有拿到锁标记的线程才能访问这个对象.
8 线程的死锁:至少两把锁.避免用Synchronized嵌套.
9 Synchronized:可用来修饰方法和代码块
(1)修饰代码块,表示该代码块为同步代码块,可在括号里加对象 Synchronized(obj);
(2)修饰方法:表示该方法都对当前对象(this)加锁.
一个线程可以拿到多个锁标记,一个对象最多只能将锁标记给一个线程.
Synchronized 是以牺牲程序运行的效率为代价的.
好好学习,天天向上 |
|