黑马程序员—— 线程基础总结
来源:互联网 发布:补水爽肤水推荐知乎 编辑:程序博客网 时间:2024/06/04 23:24
Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
线程是程序中的执行线程。java虚拟机允许应用程序并发的运行多个执行线程。
每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记一个守护程序。当某个线程中运行的代码创建一个新的Thread对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程的守护线程是,新线程才是守护程序。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
然后,下列代码会创建并启动一个线程:
PrimeThread p = new PrimeThread(143);
p.start();
总结为:
1.定义类继承Thread;
2.复写Thread中的run方法;
3.调用线程的start方法,该方法有两个作用:1、启动线程;2、调用run方法。
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:
--------------------------------------------------------------------------------
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
--------------------------------------------------------------------------------
然后,下列代码会创建并启动一个线程:
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。
步骤:
1.定义类实现Runnable接口
2.覆盖Runnable结果中的run方法
3.通过Thread类建立线程对像
4.将Runnable接口的子对象作为实际参数传递给Thread类的构造函数
5.调用Thread类的start方法开启线程并调用Runnable接口子类中的run方法
线程都有自己的名字用Thread.currentThread或this.getName获得线程的名字 setName设置线程的名字
实现方式和继承方式的区别:
1.实现方式的好处:避免了单继承的局限性
在定义线程时,建议使用实现方式。
2.继承Thread:线程代码存放在Thread的子类中
实现Thread:线程代码存放在Runnable的子类中
线程安全问题 用同步代码块 synchronized(对象){同步代码}
0 0
- 黑马程序员—— 线程基础总结
- 黑马程序员——Java基础---线程的另一个总结(5)--线程池,线程定时器
- 黑马程序员——Java基础---线程的另一个总结(3)--互斥,线程锁
- 黑马程序员——java基础:线程
- 黑马程序员——Java基础--线程
- 黑马程序员—JAVA基础之多线程
- 黑马程序员-Java基础之多线程总结
- 黑马程序员—线程基础知识部分总结
- 黑马程序员—java之多线程总结
- 黑马程序员——Java基础---线程的另一个总结(8)--Semaphere同步工具,控制线程可用线程
- 黑马程序员——java基础总结
- 黑马程序员——JAVA基础总结
- 黑马程序员—JAVA基础总结
- 黑马程序员-Java基础总结19——线程并发库与传统计时器
- 黑马程序员——Java基础---线程的另一个总结(1)--基本创建方法
- 黑马程序员——Java基础---线程的另一个总结(2)--定时器
- 黑马程序员——Java基础---线程的另一个总结(7)--condition,await
- 黑马程序员——Java基础---线程的另一个总结(9)--其他同步工具
- 验证码处理技术
- Particle Become Smaller When Game running
- .net reactor 学习系列(一)---.net reactor介绍
- 总结
- PHP数组是否是引用类型?
- 黑马程序员—— 线程基础总结
- 本地存储
- 开源流媒体播放器EasyPlayer
- HDU 5179 - beautiful number (DFS)
- 斯坦福大学公开课cs106p - 01笔记
- 【Android】9PNG图片的制作和消除
- 【笔记1】关于联想g470更换intel5300网卡的问题
- Win7 Cookie位置
- AddressSanitizer使用记录