`
luchy0120
  • 浏览: 3746 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
new  Thread().start()时,进入runnable状态 当cpu调用时,则进入running状态 当正常结束时,进入dead状态 当在run方法中遇到某个对象p.wait()时,线程进入p对象的wait Pool 当另外一个线程的run方法中调用p.notify()时,当前线程被唤醒,并进入lock pool,等待获取对象的锁定网上还有另外一种画法,显得比较简单,将所有阻塞的东西都放到blocked状态中,其实这样画不利于彻底理解线程变化的细节。   
下面是一个生产者消费者实例。wait使得当前执行的线程进入某个对象的休息池,notify唤醒某个对象休息池中的某个线程,使其进入某个对象的等待池,等到该线程重新获得锁定,就会继续执行之前wait后面的代码。 public class ThreadDemo2 {         public static void main(String args[]){               Q p=new Q();               new Thread(new Producer(p)).start();               new Thread(new Consumer(p)) ...

多线程基础----join

    博客分类:
  • J2SE
JDK 是这样说的:join public final void join (long millis )throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever.   thread1.join(10000)表示主线程将等待thread1运行10000后,才开始继续运行该语句后面的语句。     public  static void main(String args[]){        Threa ...
线程的setDaemon(true)方法声明线程为一个后台线程。当main主线程结束后,只要存在前台线程,那么整个进程不会结束。  public  static void main(String args[]){        Thread t1= new Thread(new Runnable() {            @Override            public void run() {                while(true){                    System.out.println("run():"+Thread. ...

JAVA获取版本号

 
String version = FrameworkInfo.class.getPackage().getImplementationVersion(); JAR除了包含.class文件外,还包括一个META-INF文件夹.它下面又包含了一个MANIFEST.MF的文件.它包含了这个产品的产品信息,其中包含版本号

移位运算

《深入理解计算机系统》第36页 1、x<<k表示x向左移动k位,丢弃最高的k位,并在右端补k个0. 2、x<<j<<k等价于(x<<j)<<k 3、x>>k,机器支持:逻辑右移和算数右移。逻辑右移在左端补k个0;算术右移在左端补k个最高有效位的值,对有符号数的运算非常有用 4、C语言中unsigned声明的整形对象右移是逻辑的,而有符号数据(默认声明的整形对象),算数的或者逻辑的都行。几乎所有的编译器/机器组合都是对有符号数进行算术右移。 5、JAVA语言中x>>k是算术右移,x>> ...
Global site tag (gtag.js) - Google Analytics