您的位置:首页 > 博客中心 > 编程语言 >

Rhythmk 一步一步学 JAVA (21) JAVA 多线程

时间:2022-03-21 06:14

1、JAVA多线程简单示例

  1.1 、Thread  集成接口 Runnable 

  1.2 、线程状态,可以通过  Thread.getState()获取线程状态:

        New (新创建)

        Runnable (可以运行)

        Blocked  (被阻塞)

        Waiting  (等待)

         Timed waiting (计时等待)

        Terminated  (被终止)

?
package com.rhythmk.filedemo;   public class Thread_demo {       public static void main(String[] args) {         MyThread td = new MyThread();         td.SetTitle("td1");         td.start();         td = new MyThread();         td.SetTitle("td2");         td.start();     }   }   class MyThread extends Thread {       private String title;       public void SetTitle(String str) {         this.title = str;     }       @Override     public void run() {           for (int i = 0; i < 10; i++) {             System.out.println(String.format(" num:%d,\"Title\":%s", i,                     this.title));             // 休眠当前线程             try {                 Thread.sleep(1000);             } catch (InterruptedException e) {                                   e.printStackTrace();             }         }       }   }

  http://programming.iteye.com/blog/158568

线程的同步 
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 
由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。 
1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如: 

Java代码  gxlsystem.com,布布扣
  1. Class I_am_immutable  
  2. {  
  3. private final int MAX_VALUE = 10;  
  4. priate final int blank_final;  
  5. public I_am_immutable( int_initial_value )  
  6. {  
  7.       blank_final = initial_value;  
  8. }  
  9. }  


一个由构造函数进行初始化的final型变量叫做blank final。一般的,如果你频繁的只读访问一个对象,把它声明成一个不变对象是个保证同步的好办法,而且可以提高JVM的效率,因为HotSpot会把它放到堆栈里以供使用。 
同步封装器(Synchronization Wrappers) 
       同步还是不同步,是问题的所在。让我们跳出这样的思维模式吧,世事无绝对。有什么办法可以使你的类灵活的在同步与不同步之间切换呢? 有一个非常好的现成例子,就是新近引入JAVA的Collection框架,它是用来取代原本散乱的、繁重的Vector等类型。Vector的任何方法

 

备注:

 1、休眠当前进程: 

?
Thread.sleep(1000)

  

 

Rhythmk 一步一步学 JAVA (21) JAVA 多线程,布布扣,bubuko.com

本类排行

今日推荐

热门手游