java多线程basic
可参考的博客:
https://www.cnblogs.com/wxd0108/p/5479442.html
1.多线程
进程的概述:正在运行的应用程序就是一个进程,线程是依赖于进程。
线程的概述:每一个应用程序中可以有多个任务,那么每一个任务就是一个线程。
多进程的系统的意义:提高了CPU的使用率
多线程的意义:提高了应用程序的使用率
CPU在不同的线程之间进行快速的切换,线程的执行具有随机性。
2.多线程的实现方式
a.继承Thread类
1.写一个类继承自Thread
2.重写run方法,(run方法中是子线程需要执行的代码)
3.创建该类的对象
4.开启线程 start()
b.实现Runnable接口
1.写一个类实现Runnable接口
2.实现Runnable接口中run方法,(run方法中是子线程需要执行的代码)
3.创建该类的对象
4.创建Thread对象,将上一步的对象作为构造方法参数传递进来
5.开启线程 start()
3.线程中的常见的方法
a.setName(String name); 设置线程的名称
b.String getName() ; 获取线程的名称
c.static Thread currentThread(); Thread.currentThread(); 获取当前运行的线程
d.static void sleep(long mills) ; 让当前线程休眠多少毫秒
e.stop()
4.线程的调度
a.分时调度模型(mac)
b.抢占式调度模型
多个线程同时去抢占CPU的执行权,谁抢占到了,那么CPU就执行谁。
5.多线程的数据安全问题
如何去判断会出现数据的安全问题:
1.是否是多线程环境
2.是否有共享的数据
3.是否有多条语句共同操作共享的数据
如何解决的?
使用同步代码块
格式:
synchronized(锁对象) {
需要同步的代码;
}
注意事项:多个线程的锁对象必须要是同一个对象。
同步代码块的作用:如果一段代码被同步代码块括起来,那么当一个线程在执行这么一部分代码的时候
其余线程不能进来执行,只有等到当前的线程执行完毕这么一部分代码以后,其余的线程才有可能去执行
这么一部分代码。
同步方法:如果一个方法中所有的代码都被同步代码块括起来,我们可以将这个方法声明成一个同步方法。
就是在方法的声明上加上一个synchronized关键字。
注意事项:1.同步方法,锁对象是this
2.静态的同步方法,锁对象是当前类的字节码文件对象
6.学习过的线程安全的类
StringBuffer Vector Hashtable
Collections.synchronizedXXX(XXX): 将一个线程不安全的集合转换成一个线程安全的集合
实现多线程的两种方式
线程的运行的流程图
死锁的理解
线程出现的安全问题
本文来自博客园,作者:diligently,转载请注明原文链接:https://www.cnblogs.com/luo12828-foxmail/p/16964192.html

浙公网安备 33010602011771号