多线程存在的意义:
一个进程中允许多个任务可以同时执行
多线程的创建方式:
方式一:继承thread
1.自定义一个类继承thread
2.重写thread的run方法,把自定义线程的任务代码放在run方法上
3.创建thread类的子类对象,并且调用start方法开启线程
(线程一旦开启,就会执行run方法中的代码)
方式二:实现Runnable接口
1.自定义一个类实现Runnable接口
2.实现Runnable的run方法
3.创建Runnale实现类的对象
4.创建Thread的对象,然后把Runable实现类的对象作为参数传递
5.调用thread对象的start方法开启线程
java中的同步机制:
出现线程安全问题的根本原因:
1.存在两个或者两个以上的线程共享资源
2.操作资源的代码块必须有语句
1.同步代码块
同步代码块格式:
1 synchronized(锁对象){ 2 需要被同步的代码块。。。 3 }
同步代码块要注意的细节:
1.锁对象可以是任意对象。
2.锁对象必须是多线程共享的一个资源,否则锁不住
3.没有线程安全问题的时候不要使用锁,因为会导致效率降低
4.调用sleep方法并不会释放对象,但是调用wait方法的线程会释放对象
2.同步函数
修饰符 synchronized 返回值类型 函数名(形参列表){
}
注意:
1.同步函数的锁对象不能使任意的,非静态同步函数的锁对象是this对象,静态函数的锁对象是当前字节码对象
2.同步函数的锁不能由你决定,是固定的