多线程
来源:互联网 发布:usb3.0端口 编辑:程序博客网 时间:2024/05/01 12:57
线程安全: 线程同步,当一个程序对一个线程安全的方法或语句访问时,其他的不能对他进行操作,必须等到这次访问结束才能对这个线程安全的方法进行访问
线程不安全:线程不同步
线程安全问题是由全局变量及静态变量引起的,若每个线程中对全局变量,静态变量只有读操作,而无写,一般来说,这个局部变量线程安全的,若多个线程同时执行写操作,一般考虑线程同步,否则可能影响线程安全。
安全 : 医院的网站,银行网站
效率 : 新闻网站,论坛之类的
1.一个类只要继承了Thread类,此类就称为多线程操作类,在Thread子类中,必须明确地覆写Thread类中的run( )方法
此方法为线程主体
格式: class 类名称 extends Thread{
属性;
方法;
public void run( ){ //覆写Thread类中的run( )方法,此方法是线程的主体
线程主体
}
2.如果要正确的启动线程,是不能直接调用run()方法,而应该是调用从Thread类中继承而来的start( )方法。
3.实现Runnable接口相对于继承Thread类来说,适合多个相同程序代码的线程去处理同一资源情况,可以避免
由于java的单继承性带来的局限,争强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
通过Runnable实现多线程
格式: class 类名称 implements Thread{
属性;
方法;
public void run( ){ //覆写Runnable类中的run( )方法,此方法是线程的主体
线程主体
}
4.线程的状态
创建状态,就绪状态,运行状态,堵塞状态,死亡状态。
5.线程的强制运行,可以是用join()方法让一个线程强制运行,线程运行期间,其他线程无法运行,必须等此线程完成才可以继续执行。
6.在线程中允许一个线程进行暂时的休眠,直接使用Thread.sleep()方法即可实现休眠。
class Mythread implements Runnable {
@Override
public void run() {
for( int i=0; i<5; i++){
try{
Thread. sleep(500);
} catch(Exception e){}
System. out.println(Thread. currentThread().getName()+"行,i="+ i);
}
}
}
public class ThreadSleepDemo {
public static void main(String[] args) {
Mythread mt= new Mythread();
new Thread( mt, "线程").start(); //启动线程
}
}
7.在一个线程运行时,另外一个线程可以直接通过interrpt()方法中断其运行状态。
8.线程的优先级
在java的线程中使用setPriority( )方法可以设置一个线程的优先级
对象1.setPriority(Thread.MIN_priority) 最低优先级
2.setPriority(Thread.norm_priority) 中等优先级
3.setPriority(Thread.MAX_priority) 最高优先级
9.同步:指多个操作在同一个时间段内只能有一个线程进行,其他线程要等待完成之后才可以继续执行
①同步代码块
synchronized(同步对象){
需要同步的代码;
}
②同步方法 synchronized
synchroized 方法返回值 方法名称(参数列表)
{ }
异步 :Asynchronous
一
1.进程:是一个正在执行中的程序,每个进程执行都有一个执行顺序,该顺序
是一个执行路径,或者叫一个控制
2.线程: 就是进程中的一个独立的控制单元,线程在控制着进程的执行
一个进程中至少有一个线程
3.java vm:启动的时候会有一个进程java.exe,该进程中至少一个线程负责java
程序的执行,而且这个线程运行的代码存在于main方法中。
该线程称之为主线程。
4.扩展:其实更细节说明jvm,jam启动不字一个线程,还要负责垃圾回收的线程
二。如何在自定义代码中,自定义一个线程?
通过对API的查找,java已经提供对线程这类事物的描述,就Tread类
创建线程的第一种方式,继承Tread类
步骤: 1.定义类继承Tread
目的:讲自定义代码存储在run方法,让线程运行。
2.复写Thread类中的run方法
3.调用线程的start方法,该方法两个作用:
因为多个线程都获取Cpu的执行权,cpu执行到谁,谁就运行。
我们可以形象的把多线程的运行行为在互相抢夺cpu的执行权。
三。Thread类用于描述线程
该类就定义了一个功能,用于存储线程要执行的代码,该存储功能就是run方法
也就是说thread类中的run方法,用于存储线程要运行的代码
0 0
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- OC学生成绩管理类(二 Score分数类)
- 反射、泛型(通配符)、注解
- 打印系统环境变量
- hadoop1.2.1运行wordcount报错
- poj 3187 Backward Digit Sums
- 多线程
- 全面解析Linux 内核 3.10.x - start_kernel()
- 完全退出Android应用程序的四种方法
- 加解密杂烩程序开发(一)
- UIButton 的一些属性
- 数组与类集(集合)
- cocos2d-x学习笔记2
- C8051F020实现ADC采样芯片外的模拟电压,通过LCD显示,并通过串口发送到PC机
- 使用可变变量