首页 > 代码库 > J2SE基础:13.多线程编程
J2SE基础:13.多线程编程
1:进程和线程
进程:运行一个程序,程序在内存分配了运行空间。在内存起了一个进程。
线程:在进程中运行。多个线程之间可以进行相互的切换。
主线程
子线程:子线程都是从主线程中分配出来的。
2:主线程的重要性。
3:在Java中创建多线程
1:继承Thread类:
2:实现Runable接口:
继承Thread类与实现Runable接口的区别:
Java只支持单继承,一旦一个类继承了Thread类的话,就不能再继承其它的类了。
4:Seleep方法
5:Thread.join方法:一个线程如果join了另一个线程,那么这个线程就必须等另一个线程
的run方法运行结束(线程结束)。====调方法
Thread.yield方法:让出CPU的资源,让其它的线程执行。
Thread.setPriority():设置线程的优先级。优先级,CPU调度的时间也就越长。
Max = 10
Normal = 5
Min = 0;
取值范围在0---10之间即可。
Thread.seleep():线程的休眠。与yield不同的,它是休眠。可以被唤醒。
停止线程的方法:
以前老的实现方式
stop/destory方法。会引起死锁(结合迭代器与集合的方式理解死锁)现在新的方式:
6:为什么要使用线程同步:
A:当多个线程同时访问一个资源时,会造成资源数据的不同步。因此要对资源加锁。
这一加锁的过程,就是在线程并发时,只有一个线程能够访问到该资源。因此叫做
线程的同步。
7:锁的概念
8:到底锁什么:
锁住当前方法(当前变量)所在的对象和类。
synchronized(同步)
asynchronized(异步)
9:怎么实现线程同步:
A:方法同步。
B:代码块同步:
方法同步与代码块同步的区别:
方法同步:锁住当前方法所在的对象。因此执行整个方法直到完成,一直锁住当前对象。
代码块同步:对象的锁只在执行synchronized这一部分的代码块。其它的代码块也会出
现线程同步的问题。
synchronized (this) {
count = count + 1;
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("当前线程=" + Thread.currentThread().getName()
+ ",Count值 =" + count);
}
System.out.println(count);
10:锁的粗粒度:
锁的粗粒度只能在代码块同步中更改锁的大小。方法的同步的是没有办法更改的。
11:线程之间的协作:
wait();/notify();
J2SE基础:13.多线程编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。