关于线程问题的总结
来源:互联网 发布:ae cc mac 破解补丁 编辑:程序博客网 时间:2024/05/29 18:14
进程:正在进行中的程序(直译)
线程:就是进程中一个负责程序执行的控制单元(执行路径)
一个进程中可以有多个执行路径,称之为多线程。
开启多个线程是为了同时运行多部分代码。
每一个线程都有自己运行的内容。这个内容可以称为线程要执行的任务。
如何创建一个线程了?
1,创建线程方式一:继承Thread类
步骤:
1,定义一个类继承Thread类
2,覆盖Thread类中的run方法。
3,直接创建Thread的子类对象创建线程。
4,调用start方法开启线程并调用线程的任务run方法执行。
2,创建线程方式二:实现Runnable接口
1,定义类实现Runnable接口。
2,覆盖接口中的run方法,将线程的任务代码封装到run方法中。
3,通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数进行传递。
4,调用线程对象的start方法开启线程。
例子:
class SubThread extends Thread
{
public void run()
{
System.out.println("123");
}
}
SubThread s = new SubThread();
s.start();
class ThreadImpl implements Runnable
{
public void run()
{
System.out.println("123");
}
}
ThreadImpl tl = new ThreadImpl();
Thread t = new Thread(tl);
t.start();
线程安全问题产生的原因:
1,多个线程在操作共享的数据
2,操作共享数据的线程代码有多条
当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算,就会导致线程安全问题的产生。
解决线程安全问题的办法就是使用锁!
就是使用同步函数或同步代码块。
同步函数是粗粒度锁,因为锁加在方法上。同步代码块是细粒度锁,代码级别的锁。
public synchronized void add(int num){
code..
}
锁其实是this
synchronized(obj)
{
code..
}
锁可以任意
线程:就是进程中一个负责程序执行的控制单元(执行路径)
一个进程中可以有多个执行路径,称之为多线程。
开启多个线程是为了同时运行多部分代码。
每一个线程都有自己运行的内容。这个内容可以称为线程要执行的任务。
如何创建一个线程了?
1,创建线程方式一:继承Thread类
步骤:
1,定义一个类继承Thread类
2,覆盖Thread类中的run方法。
3,直接创建Thread的子类对象创建线程。
4,调用start方法开启线程并调用线程的任务run方法执行。
2,创建线程方式二:实现Runnable接口
1,定义类实现Runnable接口。
2,覆盖接口中的run方法,将线程的任务代码封装到run方法中。
3,通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数进行传递。
4,调用线程对象的start方法开启线程。
例子:
class SubThread extends Thread
{
public void run()
{
System.out.println("123");
}
}
SubThread s = new SubThread();
s.start();
class ThreadImpl implements Runnable
{
public void run()
{
System.out.println("123");
}
}
ThreadImpl tl = new ThreadImpl();
Thread t = new Thread(tl);
t.start();
线程安全问题产生的原因:
1,多个线程在操作共享的数据
2,操作共享数据的线程代码有多条
当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算,就会导致线程安全问题的产生。
解决线程安全问题的办法就是使用锁!
就是使用同步函数或同步代码块。
同步函数是粗粒度锁,因为锁加在方法上。同步代码块是细粒度锁,代码级别的锁。
public synchronized void add(int num){
code..
}
锁其实是this
synchronized(obj)
{
code..
}
锁可以任意
阅读全文
0 0
- 关于线程问题的总结
- 关于线程问题的一些总结
- 关于Java的线程问题总结
- 关于线程问题的一些总结
- 关于线程的总结
- 关于线程的问题
- 关于线程的问题
- 关于线程的问题
- 关于线程的问题
- 关于线程知识的总结
- 关于线程的知识点总结
- 关于线程的一点总结
- 关于线程、进程的总结
- 关于线程的终止问题
- 关于线程的停止问题
- 关于线程创建的问题
- 关于线程池的问题
- 关于Android的线程问题
- JMeter HTTP信息头管理器
- 深入理解程序从编译到运行
- 关于透明度不兼容问题
- better-scroll api
- javascript中静态方法、实例方法、内部方法和原型的一点见解
- 关于线程问题的总结
- iOS tableview左滑删除不灵敏
- JVM 调优
- 学习Retrofit
- SSM框架下的redis缓存
- svn update提示svn is already locked
- 九、linux编辑器哪家强?出门左转找Qt!
- 论算法的重要性与乐趣
- SQLServer 及tableau中的回车符与换行符