java_线程整合
来源:互联网 发布:撩汉 知乎 编辑:程序博客网 时间:2024/05/17 09:24
1、线程和进程(linux下fork系统调用以及操作系统详解)
进程:资源分配基本单位
线程:资源占有基本单位
2、单进程:DOS、主线程:main
3、Thread 核心方法run()
**start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
4、两种方式:
1.实现runnable()接口
2.定义一个Thread子类并重写run()方法
5、线程启动 和 方法调用
线程启动:1.实现runnable接口(重写run方法) -->new Thread(实现runnable接口的类的对象)-->调用start()方法
2.继承Thread类(重写run方法) -->start方法
方法调用 : run方法的调用 虚拟机实现的只是start方法
由此:JVM调用start方法,而start后台需要创建deamon精灵线程调用run方法
6、线程基本方法
isAlive 判断线程是否终止
getPriority 获得线程优先数值
setPriority 设置线程优先数值
Thread.sleep(mm) 线程睡眠毫秒数
join 合并线程
yield 让出cpu进入就绪就绪队列
wait
notify/notifyAll 唤醒等待线程
sleep:静态方法 睡眠 若被其他线程打断 则抛出异常InteruptedException
7、线程同步
执行顺序问题
锁定同步内容:synchoronized(this){锁定内容} 或者在方法类型前面添加关键字synchronized 互斥锁
类似于静态块static修饰
由synchoronized造成死锁
面试实例剖析:
public class TT implements Runnable {
int b = 100;
public synchronized void m1(){
try{
b = 1000;
Thread.sleep(5000);
System.out.println("m1:b="+b);
}catch(Exception e){ }
}
public void m2() {
System.out.println("m2:"+b);
}
public void run() {
m1();
}
public static void main(String[] args) throws Exception{
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
// Thread.sleep(1000); //修改睡眠时间或删除该行观察变量b结果
tt.m2();
}
}
若添加Thread.sleep(1)一句,tt.t2()打印出1000,若删除Thread.sleep(1);,tt.t2()打印出100
-------------------->线程机制
Object 类 两个重要方法被继承:wait 和 notify
- java_线程整合
- Java_线程
- JAVA_线程
- Java_线程
- FLEX整合JAVA_完整版
- Java_线程池ThreadPool
- Java_线程_ThreadLocal
- Java_并发线程_CompletionService
- Java_并发线程_Condition
- java_基础_线程
- Java_线程-Thread
- Java_并发线程_Lock、ReadWriteLock
- Java_多线程_线程状态
- Java_自己写的线程队列类
- Java_并发线程_Future、FutureTask、Callable
- Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger
- Java_多线程_创建及启动线程
- Java_线程—经典的例子:售票
- c# Assembly 类
- 开发第一步之SMTP协议发送邮件,获取手机的详细信息
- java_jdbc整合
- 深入理解Android消息处理系统——Looper、Handler、Thread
- hdoj 1099 Lottery(期望)
- java_线程整合
- java_TCP/UDP整合
- multimedia sync
- 快盘开放API C# 实现
- 2012年初的10个绝对让你惊喜的jQuery插件
- Java如何获得当前目录代码示例
- C++中extern “C”含义深层探索
- lvs+keeplive完整配置文档
- Informatica Powercenter调优