Java多线程学习笔记1

1、线程的基本概念  

一个关于计算机的简化的视图是: 它有一个执行计算的处理机、 包含处理机所执行的程
序的 ROM(只读存储器)、 包含程序所要操作的数据的 RAM(只读存储器)。线程,被认为是带有自己的程
序代码和数据的拟处理机的封装。线程的三个部分处理机,代码,数据。

代码可以或不可以由多个线程共享, 这和数据是独立的。 两个线程如果执行同一个类的
实例代码,则它们可以共享相同的代码。
类似地,数据可以或不可以由多个线程共享, 这和代码是独立的。 两个线程如果共享对
一个公共对象的存取,则它们可以共享相同的数据。

线程化是允许多个活动共存于一个进程中的工具。 线程也称作轻量级进程。就象进程一样, 线程在程序中是独立的、 并发的执行路径, 每个线程有它自己的堆栈、 自己的程序计数器和自己的局部变量。一个进程中的多个线程共享相同的内存地址空间, 这就意味着它们可以访问相同的变量和对象, 而且它们从同一堆中分配对象。

每个 Java 程序都至少有一个线程 — 主线程。 当一个 Java 程序启动时, JVM 会创建主线程,并在该线程中调用程序的main() 方法。JVM 还创建了其它线程, 您通常都看不到它们 — 例如, 与垃圾收集、 对象终止和其它JVM 内务处理任务相关的线程。

2、线程的一些原因

使UI 响应更快,利用多处理器系统。

线程和进程的区别是:
每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。
线程作为轻量的进程, 同一类线程可以共享代码和数据空间, 但每个线程有独
立的运行栈和程序计数器,因此线程切换的开销较小。
多进程——在操作系统中能同时运行多个任务(程序) ,也称多任务。
多线程——在同一应用程序中有多个顺序流同时执行。

3、Java 编程中的线程

一个 Thread 类构造函数带有一个参数, 它是 Runnable 的一个实例。 一个 Runnable 是由一个实现了 Runnable 接口(即,提供了一个 public void run()方法)的类产生的。

一个多线程编程环境允许创建基于同一个 Runnable 实例的多个线程。这可以通过以下
方法来做到:
Thread t1=new Thread(r); 
Thread t2=new Thread(r); 
此时,这两个线程共享数据和代码。

3.1启动线程

一个新创建的线程并不自动开始运行。你必须调用它的 start()方法。调用 start()方法使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由 JVM调度并执行。这并不意味着线程就会立即运行。

3.2线程状态


(1)新建状态——就绪状态:

当程序员显式调用线程的 start()方法时,该线程进入就绪(Runnable) 状态,也称可运行状态。

(2)就绪状态——运行状态:

Java 运行时系统提供的线程调度器按照一定的规则进行调度,一但某个线程获得执行机会,则立即进入运行(Running)状态、开始执行线程体代码。

(3)运行状态——阻塞状态:

 当一个运行状态的线程发生阻塞时,调度器立即调度就绪队列中的另一个线程开始运行。

(4)阻塞状态——就绪状态:

当处于阻塞状态的线程所等待的条件已经具备, 例如用户输入操作已经完成时, 该线程将解除阻塞, 进入就绪状态。 注意, 不是恢复执行, 而是重新到就绪队列中去排队。

(5)运行状态——终止状态

线程的 run()方法正常执行完毕后,其运行也就自然结束,线程进入终止(Dead)状态。也可以在运行过程中,非正常地终止一个线程的执行,例如调用其 stop()方法。处于终止状态的线程不能在重新运行,因此不允许在一个 Thread 对象上两次调用start()方法。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!很高兴回答你关于Java并发编程的问题。请问你想知道什么方面的内容呢?我可以分享一些学习笔记和建议给你。 1. 并发编程基础:了解并发编程的基本概念,如线程、进程、锁、同步等。学习Java中的并发编程模型以及相关的API,如Thread、Runnable、Lock、Condition等。 2. 线程安全性:学习如何保证多线程环境下的数据安全性,了解共享资源的问题以及如何使用同步机制来防止数据竞争和并发问题。 3. 线程间的通信:掌握线程间的通信方式,如使用wait/notify机制、Lock/Condition等来实现线程的协调与通信。 4. 并发容器:学习并发容器的使用,如ConcurrentHashMap、ConcurrentLinkedQueue等。了解它们的实现原理以及在多线程环境下的性能特点。 5. 并发工具类:熟悉Java提供的并发工具类,如CountDownLatch、CyclicBarrier、Semaphore等,它们可以帮助你更方便地实现线程间的协作。 6. 并发编程模式:学习一些常见的并发编程模式,如生产者-消费者模式、读者-写者模式、线程池模式等。了解这些模式的应用场景和实现方式。 7. 性能优化与调试:学习如何分析和调试多线程程序的性能问题,了解一些性能优化的技巧和工具,如使用线程池、减少锁竞争、避免死锁等。 这些只是一些基本的学习笔记和建议,Java并发编程是一个庞大而复杂的领域,需要不断的实践和深入学习才能掌握。希望对你有所帮助!如果你有更具体的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值