关于线程问题的总结

来源:互联网 发布: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..
}
锁可以任意
原创粉丝点击