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
原创粉丝点击