java 多线程,sleep()和wait()
java 线程可谓是java中重要的一个机制,在说线程之前需要知道什么是进程,进程和线程的关系是是什麽?
1.什么是进程?什么是线程?
进程:用句简单的粗俗的来说,进程就是程序。进程是一个正在运行的程序!比如:打开一个记事本程序,那么这个正在运行的记事本程序就是一个进程。
线程:线程是由进程所创建来执行某个功能的一个机制。那么也就是说,没有进程就没有线程。一个线程只能对应一个进程,一个进程却可以有多个线程的存在。
2.那么在java中如何创建一个线程?
在java中创建线程有两个方法:
一:通过类继承Thread实现线程创建。
例:class Thread1 extends Thread {
public void run() {
System.out.println("hello, the world!");
}
}
public class Text {
public void main(String[] args) {
new Thread1().start();
}
}
二:通过实现Runnable来创建线程
例:class Tread2 implements Runnable {
public void run() {
System.out.println("wellcome to Java world!");
}
}
public void Text {
public void main(String[] args) {
new Thread(new Thread2()).start();
}
}
同样两种方法都可以通过匿名内部类的方式创建线程。
3. sleep()和wait()是什麽?他们有什么区别,对同步有什么影响。
sleep():是线程的一个睡眠方法,它可以接收long类型的参数作为睡眠的时间!当线程运行该方法时,线程会进入睡眠状态,把cpu时间片让出给其他线程使用。当参数时间之后,线程会自动唤醒,等待下一个时间片段继续执行。在睡眠期间,sleep()不会释放线程锁,也就是或,该线程所访问的同步块会一直被该线程占用,别的线程无法访问,直到线程重新启动,并释放线程锁。
wait():是属于Object的类,wait()和sleep()都是使线程进入睡眠状态,但是wait()需要别的线程去使用Thread.notify()唤醒被wait()睡眠的线程,否则线程会一直处于睡眠状态,知道程序关闭。如果该线程正占用着同步资源,那么一直不唤醒,就会导致同步资源无法访问,避免这样,所以当wait()睡眠的线程会释放线程锁,让出cpu时间片段,当被唤醒的时候,该线程会重新等待下一次时间片段,重新进入同步块。
4.几个常用的线程方法
Thread th = Thread.currentThread(); 用于获取运行当前代码片段的线程
long getId() 返回该线程的标识符
String getName() 返回该线程的名称
int getPriority() 返回线程的优先级
Thread.state getState(); 获取线程的状态
boolean isAlive(); 测试线程是否处于活动状态
boolean isDaemon(); 测试线程是否为守护线程
boolean isInterrupted(); 测试线程是否已经中断
java 多线程,sleep()和wait()的更多相关文章
- 40个Java多线程问题总结
前言 Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多.越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的.这篇文章主要是对多线程的问题进行 ...
- Java多线程基础知识篇
这篇是Java多线程基本用法的一个总结. 本篇文章会从一下几个方面来说明Java多线程的基本用法: 如何使用多线程 如何得到多线程的一些信息 如何停止线程 如何暂停线程 线程的一些其他用法 所有的代码 ...
- Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40)一. tryAcqu ...
- Java多线程系列--“JUC锁”04之 公平锁(二)
概要 前面一章,我们学习了“公平锁”获取锁的详细流程:这里,我们再来看看“公平锁”释放锁的过程.内容包括:参考代码释放公平锁(基于JDK1.7.0_40) “公平锁”的获取过程请参考“Java多线程系 ...
- Java多线程--让主线程等待子线程执行完毕
使用Java多线程编程时经常遇到主线程需要等待子线程执行完成以后才能继续执行,那么接下来介绍一种简单的方式使主线程等待. java.util.concurrent.CountDownLatch 使用c ...
- Java多线程 2 线程的生命周期和状态控制
一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就 ...
- java 多线程 1 线程 进程
Java多线程(一).多线程的基本概念和使用 2012-09-10 16:06 5108人阅读 评论(0) 收藏 举报 分类: javaSE综合知识点(14) 版权声明:本文为博主原创文章,未经博 ...
- 一起阅读《Java多线程编程核心技术》
目录 第一章 Java多线程技能 (待续...)
- 第一章 Java多线程技能
1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...
- java从基础知识(十)java多线程(下)
首先介绍可见性.原子性.有序性.重排序这几个概念 原子性:即一个操作或多个操作要么全部执行并且执行的过程不会被任何因素打断,要么都不执行. 可见性:一个线程对共享变量值的修改,能够及时地被其它线程看到 ...
随机推荐
- POJ 3335 Rotating Scoreboard(半平面交 多边形是否有核 模板)
题目链接:http://poj.org/problem? id=3335 Description This year, ACM/ICPC World finals will be held in a ...
- adb tcp 调试
su setprop service.adb.tcp.port 5555 stop adbd start adbd
- 第一个php小程序(学习)
</pre><pre name="code" class="php"><? php $b=array("name&quo ...
- UVA - 11827 - Maximum GCD,10200 - Prime Time (数学)
两个暴力题.. 题目传送:11827 Maximum GCD AC代码: #include <map> #include <set> #include <cmath> ...
- 初探IO复用
前言 在之前的文章中,我具体实现了一个并发回射服务器并给它加载了僵尸子进程的自动清理信号机制.在正常情况下,它已经可以很好地工作了,但它能否合理应对一些特殊情况呢? 问题发现 先来看看当服务器的客户子 ...
- 在与SQL Server 建立 连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器
- CSDN第一期总结之三:Thread的问题(转)
C#是一门支持多线程的语言,因此线程的使用也是比较常见的.由于线程的知识在Win32编程的时候已经说得过多,所以在.Net中很少介绍这部分(可能.Net不觉得这部分是它所特有的). 那么线程相关的问题 ...
- 【BZOJ2729】[HNOI2012]排队 组合数
[BZOJ2729][HNOI2012]排队 Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那 ...
- delphi android 录像(使用了JMediaRecorder,MediaRecorder的使用方法)
delphi xe系列自带的控件都无法保存录像,经网友帮忙,昨天终于实现了录像功能(但有个问题是录像时无画面显示),程序主要使用了JMediaRecorder,MediaRecorder的使用方法可参 ...
- selenium2 python范例
selenium2 python范例 下面脚本的功能是:打开谷歌浏览器-->跳转到某个网址-->输入用户名和密码登录-->读取页面内的数据并求和. # coding=utf-8 #编 ...