java基础多线程

原创 2015年11月20日 22:06:54



多线程

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

 

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

 

主线程运行的代码在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

 

 

同步的弊端:死锁

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                                                                                                     

Java基础[05-多线程]

  • 2012年10月06日 09:50
  • 81KB
  • 下载

java基础多线程练习题(1)

  • 2017年08月08日 15:26
  • 7KB
  • 下载

黑马程序员_java基础笔记(04)...多线程

多线程。第一重点:创建线程的两种方式。第二重点:同步的所有特性      进程:正在执行的程序。 线程:是进程中用于控制程序执行的控制单元(执行路径,执行情景)进程中至少有一...

Java基础之多线程知识点总结

进程:当前正在执行的程序。代表一个应用程序在内存中的执行区域。 线程:是进程中的一个执行控制单元,执行路径。(线程就是进程中的一个执行者) 一个进程中至少有一个线程在负责控制程序的执行。 一个进程中如...
  • MF_Mofy
  • MF_Mofy
  • 2017年12月07日 11:50
  • 31

13.尚硅谷_java基础_多线程

  • 2013年09月26日 14:50
  • 1.58MB
  • 下载

java基础多线程

  • 2015年05月18日 11:52
  • 272KB
  • 下载

java基础(三):多线程

概述 创建线程 同步 线程间通讯 创建线程的三种方式

java多线程基础篇讲解

  • 2010年03月11日 10:30
  • 55KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java基础多线程
举报原因:
原因补充:

(最多只允许输入30个字)