core java学习笔记()

事件:上层  ActionEvent
            ItemEvent
     TextEvent
 
      底层 WindowEvent
    MouseEvent
    MouseWheelEvent

JCheckBox  复选框
JRadioButton 单选框
JPasswordField 密码输入框
JToggleButton 开关按钮(选中或不选)
JScrollPane 滚动条
JScrollBar 进度条(滚动条的实现)
JSlider 滑块
JComboBox 下拉菜单
JProgressBar 进度条
JButton 按钮

1、菜单
2、文件选择
3、颜色选择器


线程

C++的多进程是OS系统并发的一个任务
Java中没有多进程,一个JVM就是一个进程

线程是在进程中并发的一个顺序的执行流程

多进程:划分时间片,宏观上并行,微观上串行
多线程:cpu在进程内部再划分时间片

一个线程的三部分:CPU ,代码 ,数据

代码是做什么?,数据是对谁做操作?cpu决定何时做?

进程:进程间数据独立
线程:数据空间共享,堆空间的共享(堆空间中存放的是对象),栈空间是独立的
所以线程间切换容易,称为轻量级进程

线程与进程的区别:
1、一个进程有多个线程
2、进程的数据是独立的,线程的数据是共享的,线程中共享的数据是堆空间,栈空间是独占的
  
一个线程对象代表了一个线程,并非就是一个线程
线程是操作系统中负责维护的资源
java.lang.Thread类的一个对象就代表一个线程
线程是底层OS维护的资源,JVM跑在OS上,在JVM中创建一个Thread对象,调用其start()方法,底层OS会申请一个线程资源,线程对象可到底层管理一个线程
创建好线程之后,把要让线程执行的代码封装到线程对象中(覆盖run()方法)

只有处在运行状态的线程才能执行代码,当一个进程里的所有线程都结束进程才终止


实现线程代码的方式:
1、继承Thread 类,覆盖run()方法
   去底层申请线程并运行,对线程对象调start()方法,main方法是一个主线程
   宏观并行,微观串行
2、实现Runnable接口
  使用多态获得Runnable对象,成为目标对象
  再利用目标对象构造线程对象  Thread t = new Thread(MyThread);


四、多线程的状态转换图(7状态图)
  见另一文件,名为thread.jpg

static Thread currentThread() 返回对当前正在执行的线程对象的引用。

static void yield() 暂停当前正在执行的线程对象,并执行其他线程。
         
long getId() 返回该线程的标识符。

synchronized声明一个对象,也可以声明一个方法

用法1:声明一个对象   synchronized(对象){}
                      只有获得对象的锁标记才能进这个代码块,出代码块要释放对象的锁标记,代码块锁的是对象

    2、声明一个方法   在方法修饰符的地方加synchronized,对当前对象this加锁

你可能感兴趣的:(java,jvm,多线程,thread,OS)