Java学习笔记13

 
======================================================================
    JAVA 第十三天
=====================================================================
上午的内容:
    Action 的事件源
    JButton 按下激发 Action
    JTextField 敲回车会激发 Action
    JList 鼠标双击激发
    JMenuItem 选中菜单项激发     
====================================================================
下午: 多线程:
    每一个线程由3部分组成: CPU,代码,数据
    进程和线程本的区别: 对于进程,数据空间独占.线程的数据空间是共享的.堆空间是对象.堆是多线程共享的.
    在JAVA一个线程是一个对象.Thread
    一个线程对象代表了一个线程. 他不是线程.线程是操作系统维护的一种系统资源.
 
                     
    线程的状态图: 初始状态--------->可运行状态---------->运行状态--------->结束状态
                                            start                                    
    只有处在运行状态他才有机会执行代码,在那等着. 操作系统选择在可运行状态的线程中挑选一个进入运行状态,当一个CPU时间片到期了,这在运行的线程,会回到可运行状态.当RUN方法退出而时候,他会进入终止状态. 当所有的线程都进入终止状态的时候,虚拟机进程才会结束.
    在运行状态会进入堵塞: 等待输入,不再堵塞了,会进入可运行状态从新排队.
    进入堵塞状态情况: 等待输入,Thread.sleep(100); Thread.join()静态方法会把调用他的线程堵塞.当加入的线程进入终止状态的时候,当前线程才会进入运行状态.
    Thread.yield() 静态方法 放弃CPU的使用权.
    Thread.setPriority(int i) 1---10, 数字越大优先级越高.一般来说没什么用
(2) 关于 Runnable() 的例子
    package thread;
    public class TestTread {
        public static void main(String[] args) {
            Thread t=new Thread();// 代表了一个线程,不是一个线程.而是一个对象,管理线程.
            t.start();// 到底层的操作系统申请线程.
            Thread t1=new MyThread1();
            Thread t2=new MyThread2();
            Runnable r1=new MyThread3();
            Thread t3=new Thread(r1);
            t1.start();
            t2.start();
            t3.start();
        }
    }
   
    class MyThread1 extends Thread{
        public void run(){
            for(int i=0;i<20;i++){
                System.out.println(i+"   $$$$$$");
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
   
    class MyThread2 extends Thread{
        public void run(){
            for(int i=0;i<20;i++){
                System.out.println(i+"   ######");
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
   
    class MyThread3 implements Runnable{// 是目标对象,通过目标对象构造一个线程对象.
        public void run(){
            for(int i=0;i<20;i++){
                System.out.println(i+"   @@@@");
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }


(3) 关于Thread.join() 的例子
    package thread;
    public class TestThread {
        public static void main(String[] args) {
                Thread t1=new MyThread1();// 代表了一个线程,不是一个线程.而是一个对象,管理线程.
                Thread t2=new MyThread2(t1);
                t1.start();// 到底层的操作系统申请线程.
                t2.start();
        }
    }
    class MyThread1 extends Thread{
        public void run() {
            for(int i=1;i<=20;i++){
                System.out.println(i+"   $$$");
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    class MyThread2 extends Thread{
        Thread t;
        public MyThread2(Thread t) {
            this.t = t;
        }
   
        public void run(){
            for(int i=1;i<=20;i++){
                System.out.println(i+"   ###");
                try {
                    Thread.sleep(100);
                    if (i==10) t.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

 

你可能感兴趣的:(java,笔记/java,研究,java,thread,class,action,多线程,string)