java 多线程 专题
CoreJava多线程
线程的概念:
线程指进程中的一个执行流程,一个进程可以包含多个线程。
每一个进程都独享一块内存空间。每个进程都需要操作系统为其分配独立的内存地址,而同一进程中的多个线程在同一块地址空间工作,他们共享一块内存和资源。
java中有两中方法创建一个多线程类:
1、继承java.lang.Thread类,覆盖Thread类的run()方法
2、实现Runnable接口,实现Runnable接口的run()方法。推荐使用第二种,因为第二种更加的灵活。
每次调用java.exe的时候操作系统都会启动一个JVM进程,当启动JVM的时候,JVM都会创建一个主线程,改线程从程序入口main方法开始执行,这个线程的名字就叫main,可以在main方法中打印线程名:
System.out.println( Thread.currentThread().getName())来测试。
注意:每次程序运行的时候除了自定义的线程外还有一个main线程。
线程的调度
sleep(xxx),指当前运行的线程睡眠xxx秒,睡眠的时候当前线程会交出CPU,但是不会交出对象的锁!
yield(),指当前运行的线程交出CPU,给其他线程运行的机会。
join(),指将CPU交给调用join()方法的线程对象,直到该线程运行结束。
线程的各种状态
新建状态(new) //线程刚被创建出来
Runnable r = new ThreadTest2();
Thread t1 = new Thread(r,"t1");//创建线程t1 线程处在new状态
就绪状态(Runnable)
t1.start();//启动线程t1,这时候他处在Runnable状态,等待CPU的调度。
运行状态(Running)
如果处在Runnable状态的线程,被调度获得cpu,那么他就处在Running状态
阻塞状态(Blocked)
如果Running中的线程调用sleep(),yield()或者程序运行到等待输入的方法时,他就处在阻塞状态。
如果执行到了wait()语句,释放锁标记,并进入等待池中。直到某个线程调用notifyAll()方法将其从对象的等待池转进锁池,等待锁标记!
死亡状态(Dead)
线程执行完毕,就处于死亡状态。
线程安全的控制
关键就是使用:synchronized 、 wait() 和 notifyAll() &
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
java中的事件机制的参与者有3种角色:
1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中
2.event source:具体的接受事件的实体,比如说,你点击一个button,那么button就是event source,这样你必须使button对某些事件进行相应,你就需 ......
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import or ......
/*Decryptor*/
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* Decrypt the password get form Xpress GUI
*/
public class Decryptor{
//加密
  ......
Java 中给数字左边补0 (1)方法一
import java.text.NumberFormat; public class NumberFormatTest { public static void main(String[] args) {
//待测试数据
int i = 1;
......