易截截图软件、单文件、免安装、纯绿色、仅160KB

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入门

 Java学习从入门到精通 
一、 JDK (Java Development Kit) 
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......

java中synchronized用法

synchronized的一个简单例子
public class TextThread
{
 /**
  * @param args
  */
 public static void main(String[] args)
 {
  // TODO 自动生成方法存根
        TxtThread tt = new TxtThread();
      ......

利用Java API对字符串进行加密解密(DES加密算法)

 /*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学python

 python正文:     和其它语言一样,我们可以以命令行的形式给你的python程序传递参数,pyhton能够自动把命令行参数以字符串列表的形式存储在sys模块的arv变量。ok,我们先来看个例程:
 
#  文件名: printargs.py
#用途:演示python的传参
import sys
print sys.argv
在命 ......

java操作Excel

// 创建Excel
    String destFileName = tableName + ".xls";//文件名
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=".concat(String .valueOf(destFileNa ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号