java-学习笔记-线程&进程
来源:互联网 发布:淘宝店铺背景图片尺寸 编辑:程序博客网 时间:2024/06/10 14:37
1.线程&进程:
</pre><p>进程:应用程序在内存中分配的空间。-负责空间</p><p>线程:负责一个进程当中内容的运算或执行单元,也叫执行路径。-负责执行</p><p></p><p>一个进程中至少有一个线程在负责进程的运行。如果一个进程有多个线程,称改程序为多线程程序。</p><p>eg:运动场-进程。各项运动项目-线程。</p><p></p><p>2.多线程技术-解决问题</p><p>多线程好处:可以使代码同时执行,解决多部分代码同时执行的需求。用户体验相对好一些。</p><p>但是cpu在某一时刻只能处理一条线程。但是我们看到cpu下开展多条线程,cpu在各个线程下快速切换。</p><p>多线程无法提高效率,只可以合理使用cpu资源。</p><p></p><p>3.java多线程-</p><p>多线程运行是由cpu随机快速切换造成的,怎么切换cpu说的算。</p><p>JVM多线程-有两个线程:</p><p>一个自定义代码运行(这个从main方法开始执行的线程),一个是垃圾回收。</p><p>object类,finallize(垃圾回收)system.gc();(垃圾回收启动)</p><p></p><p>线程的任务都封装在特定区域中,eg:主线程运行任务都定义在main方法中,</p><p></p><p>4.通过查阅API文档,java.lang.Thread类</p><p>该类的描述中,有创建线程的两种方法。</p><p>1.继承Thread类。</p><p><span style="white-space:pre"></span>a.继承Thread类,</p><p><span style="white-space:pre"></span>b.覆盖run()方法。</p><p><span style="white-space:pre"></span>c.创建子类对象就是创建线程方法。</p><p><span style="white-space:pre"></span>d.调用Thread类中的start方法,就可以执行线程,并会调用run()方法。 (start:开启线程,运行run()方法。)</p><p></p><p>5.调用start和run方法的区别</p><p>调用start会开启,开启的线程去执行run方法中的线程任务。</p><p>直接调用run,线程并未开启,run方法执行的是主线程。</p><p></p><p>6.线程结束</p><p>线程结束-栈中没有方法,线程就结束了(线程类比游泳道)</p><p></p><p>7.多线程运行状态:</p><p></p><p>8.多线程实例——卖票</p><p></p><pre name="code" class="java">public class SaleTicket extends Thread {private int tickets=100;public void run(){while(true){if(tickets>0){System.out.println(Thread.currentThread().getName()+"*******"+tickets--);}}}} class SaleDemo {public static void main(String[] args) {// TODO Auto-generated method stubSaleTicket t1 = new SaleTicket();SaleTicket t2 = new SaleTicket();SaleTicket t3 = new SaleTicket();SaleTicket t4 = new SaleTicket();t1.start();t2.start();t3.start();t4.start();}}
9.实现Runnable
实现Runnable接口的好处,:
1.避免继承Thread类的单继承的局限性
2.Runnable接口出现更符合面向对象,将线程单独进行对象的封装。
3.Runnable接口出现,降低了线程对象和线程任务的耦合性。
所以,以后创建线程都使用第二种方式。
10.多线程安全问题
多线程有随机性,不一定与预期一致。
产生原因:
1.线程任务中有处理共享数据。
2.线程任务中,有多条对共享数据操作。
一个线程在操作共享线程的过程中,其他线程参与操作,造成了数据错误。
解决思想:
只要保证多条操作在共享数据的代码在某一时间,被一条线程所执行,在执行期间不允许其他线程参与运算。
怎样保证?用了同步代码块,
synchronized{
需要同步的代码;
}
同步,在目前情况下只能有一个线程来执行,其他线程进不来,这就是同步锁机制,
好处:解决多线程安全问题。
弊端:降低效率(可以忍受范围内)。
一种情况:安全问题后加入同步机制,之后安全问题依旧。
只要遵守同步前提,就可以解决。
同步的前提:
多个线程,在同步中,必须使用同一个锁,这才是同步。
0 0
- java-学习笔记-线程&进程
- java学习笔记-线程和进程-黑马
- Java学习笔记3-进程与线程
- Java学习笔记之进程和线程
- 03-java学习笔记【进程与线程】
- Java并发学习笔记(1) 线程与进程
- java 多线程学习笔记之进程和线程
- Java并发学习笔记(1) 线程与进程
- <JAVA学习笔记4>——进程、线程简单介绍
- java学习笔记之多线程与多进程
- JAVA学习笔记49——线程概念+进程、线程区别+创建进程三种方法
- 进程与线程学习笔记
- 进程与线程学习笔记
- 进程线程等学习笔记
- 进程与线程学习笔记
- Linux进程线程学习笔记
- 进程与线程学习笔记
- Linux进程线程学习笔记:进程创建
- [UVA11922] Permutation Transformer && Splay模板
- 黑马程序员--Java基础之集合框架工具类
- Python笔记-排序算法(2)
- android官方技术文档翻译——aar 格式
- ASCII简介及不经过比较转换字母大小写。
- java-学习笔记-线程&进程
- android4.0平台service程序分析
- SQL改写的书终于出版了
- 从输入网址到显示网页的全过程分析
- storm文档(10)----容错
- 理解一个简单的网页请求过程
- Unity新UI系统概述——Interaction Components
- Presenting view controllers on detached view controllers 警告根由
- bzoj1070: [SCOI2007]修车 费用流