关闭

java基础多线程

标签: java
149人阅读 评论(0) 收藏 举报
分类:



多线程

进程:正在运行的程序,每一个进程都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元

 

线程:就是进程中的一个建立的控制单元,线程在控制着进程的执行。一个进程至少有一个线程

 

主线程运行的代码在main中。

 

多线程存在的意义:

1可以使程序中同时进行

2提高效率

 

 

多线程的创建方式

              继承Thread类覆盖run方法

              ClassDemo extends Thread

              {

              Public void run()

              {

                       For(intx = 0; x < 60; x++);

}

}

             

文本框: 临时状态Thread类中start方法是开启线程,并调用run方法

 

文本框: sleep(time)文本框: Start()线程的状态:

文本框: Stop()文本框: 消亡文本框: 冻结文本框: Wait()文本框: 运行                        

 

 文本框: 被创建

 

 

 

 

 

 

 

 

线程都有自己默认的名称Thread-编号,编号从0开始

获取当前线程对象:static Thread currentThread()

getName():获取线程名称

setName():设置线程名称

 

 

 

创建线程的第二种方法

步骤:

  1. 定义类实现Runnable接口

  2. 覆盖Runnable接口中的run方法

  3. 通过Thread类建立线程对象

  4. Runnable接口的子类对象作为实际参数传递Thread类的构造函数。

  5. 调用Thread类的start方法开启线程并调用Runnable接口子类的run方法

 

Class  testimplements Runnable

{

              Publicvoid run()

              {

                            System.out.println(“xianchenger”);

}

}                                       

 

Test t =  newtest();

 

实现方式和继承方式有什么区别呢?

实现方式:避免了单继承的局限性

在定义线程时,建议使用实现方式

 

多线程运行出现了安全问题。

问题的原因:

              当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的报错。

解决办法:

              对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以死参与执行。

 

Java对于多线程的安全问题提供了专业的解决方式

就是同步代码块。

Syschonized(对象)

{

              需要被同步的代码

}

对象如同一把锁,持有锁的线程能在同步中运行,没有锁的线程即使有cpu运行前也不能进入同步代码块

 

同步的前提:

  1. 必须要有两个或者两个以上的线程

  2. 必须是多个线程使用同一个锁

好处:解决多线程的安全问题

弊端:多个线程需要判断锁,较为消耗资源

如何查找问题:

  1. 明确哪些代码是多线程运行代码

  2. 明确共享数据

  3. 明确多线程运行代码中哪些语句是操作共享数据的

 

函数和同步都是封装代码

Syschonized放在函数上,函数就具备了同步性

 

同步函数用的是哪一个锁呢:

              函数需要被对象调用。那么函数都有一个所属对象引用,就是this。所以同步函数使用的锁是this

 

如果同步函数被静态修饰后,使用的锁是什么呢?

              发现不是this,因为今天方法中也不可以定义this。静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象。类名.class,该对象的类型是class

 

静态的同步方法,使用的是该方法所在类的字节码文件对象,类名.class

 

 

同步的弊端:死锁

死锁出现,同步中出现同步

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                                                                                                     

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2627次
    • 积分:171
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档