Java中的多线程概念

1.如果程序只有一条执行路径,那么该程序就是单线程程序。

如果程序多条执行路径,那么该程序就是多线程程序。

2.线程是依赖进程而存在的。

而进程就是正在运行的程序。是系统进行资源分配和调度的独立单位。每一个进程都有他的内存空间和系统资源。

3.单进程的计算机只能做一件事情:dos命令窗口    现在的计算机可以做多件事情。支持多进程,并且可以提高CPU的使用率。

4.线程就是在一个进程内可以执行多个任务,每一个任务就是一个线程

线程是程序的执行单元,执行路径,是程序使用CPU的最基本单位。

5.多线程的存在,不是提高程序的执行速度,是提高应用程序的使用率  ,线程是的执行是随机的

6.并发:物理上同时发生,某一个时间点同时运行多个程序

并行:逻辑上同时发生,某一个时间内同时运行多个程序

7.Java程序的运行原理:·

由Java命令启动JVM,JVM启动相当于启动了一个进程。然后该进程创建了一个主线程去调用main方法

JVM虚拟机的启动时多线程的,因为还有启动垃圾回收线程, 否则会出现内存溢出。

8.面试题:run和start方法的区别:

run方法:仅仅是封装被线程执行的代码,直接调用是普通方法

start方法:首先是启动了线程 ,然后再由JVM去调用该线程的run()方法

9.IllegalThreadState Exception:非法线程状态异常

说明同一个线程不能被调用两次。

10.获取线程的名称:对象名.getname();  设置线程的名称:对象名.setname();

获取main方法所在线程对象的名称(不是Thread子类线程的名称):Thread.currentThread.getname();

11.获取默认优先级:对象名。getPriority();默认优先级是5。

12.设置优先级:对象名。setPriority(int newPriority);如果int类型给的不在MIN-Priority(1)或者MAX-Priority(10)之间,

会报 illegal ArgumentException      错误,意思是传入了一个不合法或者不正确的的参数值.

注意:由于线程具有随机性,运行一两次看不出来结果,一定要多运行几次。

13.(1)守护线程:对象名。setDaemon(boolean on)该方法在启动线程前调用。

(2)加入线程:对象名。setJoin()想让那个线程先执行,就在启动线程的后面加入这个方法,并且会try、catch。

(3)开启线程:对象名。Start()

(4)中断线程:对象名。Stop()已经过时,不建议用

:对象名。interrupt(),它会走tay,catch报出异常,而且不影响后面代码的执行

14.同步的问题:

前提:(1)多个线程(2)使用的是同一个锁对象(任意对象,随便创造一个)

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

弊端:当线程相当多的时候,因为每个线程都会判断同步上的锁,很耗费资源,无形中会降低程序的运行效率。

15.同步解决线程安全问题

A。同步代码块

synchronized(对象){

需要被同步的代码

}任意对象,随便创造一个

B。同步方法

把同步加在方法上

这里的锁对象是  this

C。静态同步方法

把同步加在方法上

这里的锁对象是 当前类的字节码文件对象(类名。class)

16.有关线程安全的类

(1)StringBuffer(2)Vector(3)Hashtable

如何把一个线程不安全的集合类变成一个线程安全的集合类

用 Collections工具类的方法

时间: 2024-12-08 06:40:14

Java中的多线程概念的相关文章

Java中的多线程你只要看这一篇就够了

Java中的多线程你只要看这一篇就够了 引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其实只有一半对,因为反应"多角色"的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的"生产者,消费者模型". 很多人都对其中的一些概念不够明确,如同步.并发等等,让我

Java中的多线程=你只要看这一篇就够了

如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”. 很多人都对其中的一些概念不够明确,如同步.并发等等,让我们先建立一个数据字典,以免产生误会. 多线程:指的是这个程序(一个进程)运

Java中的多线程技术全面详解

本文主要从整体上介绍Java中的多线程技术,对于一些重要的基础概念会进行相对详细的介绍,若有叙述不清晰或是不正确的地方,希望大家指出,谢谢大家:) 为什么使用多线程 并发与并行 我们知道,在单核机器上,"多进程"并不是真正的多个进程在同时执行,而是通过CPU时间分片,操作系统快速在进程间切换而模拟出来的多进程.我们通常把这种情况成为并发,也就是多个进程的运行行为是"一并发生"的,但不是同时执行的,因为CPU核数的限制(PC和通用寄存器只有一套,严格来说在同一时刻只能

为什么Java中实现多线程的方式有两种?

在面试的过程中,我们经常问被面试者,为什么Java中实现多线程的方式有两种(一种是直接继承Thread类,一种是实现Runnable接口)?可惜的是,很多面试者都答不出来,甚至从来没有想为什么.,那么真正的原因是什么呢?我们可以用反证法推理一下: 假设Java只提供Thread供大家继承从而实现多线程,考虑下面的一个需求,如果有一个已经继承了某个父类的类,但是这个类又想实现多线程,怎么办?很显然,如果只提供一个可以继承的类,肯定解决不了这个问题.那么,如何解决,毫无疑问,就只能使用接口了.

Java中使用多线程、curl及代理IP模拟post提交和get访问

Java中使用多线程.curl及代理IP模拟post提交和get访问 菜鸟,多线程好玩就写着玩,大神可以路过指教,小弟在这受教,谢谢! [java] view plaincopyprint? /** * @组件名:javaDemo * @包名:javaDemo * @文件名:Jenny.java * @创建时间: 2014年8月1日 下午5:53:48 * @版权信息:Copyright ? 2014 eelly Co.Ltd,小姨子版权所有. */ package javaDemo; impo

java中的引用类型概念

转自:http://blog.sina.com.cn/s/[email protected]陌上蜗牛 1.什么是引用类型     引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量. 在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用.     示例如下:     public class MyDate {         private int day = 8;         priva

Java中的 多线程编程

Java 中的多线程编程 一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂.在多线程访问共享数据的时候,这部分代码需要特别的注意.线程之间的交互往往非常复杂.不正确的线程同步产生的错误非常难以被发现,并且重现以修复. 2)上下文切换的开销当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另

Java中使用多线程、curl及代理IP模拟post提交和get訪问

Java中使用多线程.curl及代理IP模拟post提交和get訪问 菜鸟,多线程好玩就写着玩.大神能够路过不吝赐教.小弟在这受教.谢谢! 很多其它分享请关注微信公众号:lvxing1788 ~~~~~~ 切割线扭起来 ~~~~~~ /** * @组件名:javaDemo * @包名:javaDemo * @文件名称:Jenny.java * @创建时间: 2014年8月1日 下午5:53:48 * @版权信息:Copyright ? 2014 eelly Co.Ltd,小姨子版权全部. */

黑马程序员【Java中的多线程】

Java中的多线程 首先,在开篇讲线程之前要说一个问题,我们知道多线程的执行原理是cpu在不同的线程中做着切换操作,而一提到多线程,大家首先想到的肯定是提高系统的运行效率,可是真的是这样的么?我们来借助一位大神博客中的代码就可以看出来有时单线程的运行效率要高于多线程: import threading from time import ctime class MyThread(threading.Thread): def __init__(self, func, args, name): thr