Lombok(1.14.8) - @Synchronized

@Synchronized

@Synchronized,实现同步。

package com.huey.lombok;

import java.util.Date;

import lombok.Synchronized;

public class SynchronizedExample implements Runnable {

    @Override
    public void run() {
        sayHello();
    }

    @Synchronized
    public void sayHello() {
        System.out.println("hello, " + Thread.currentThread().getName() + "! Now is " + new Date());
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        SynchronizedExample foo = new SynchronizedExample();
        new Thread(foo).start();    // [OUTPUT]: hello, Thread-0! Now is Sat Aug 01 10:55:08 CST 2015
        new Thread(foo).start();    // [OUTPUT]: hello, Thread-1! Now is Sat Aug 01 10:55:11 CST 2015
    }
}
时间: 2024-08-05 02:26:44

Lombok(1.14.8) - @Synchronized的相关文章

Lombok(1.14.8) - @Cleanup

@Cleanup @Cleanup,关闭流.如果最后清理资源的方法不是 close(),可以指定,例如 @Cleanup("clean"). package com.huey.lombok; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import lombok.Cleanup; public class Cleanu

Lombok(1.14.8) - @SneakyThrows

@SneakyThrows @SneakyThrows,声明异常. package com.huey.lombok; import java.io.UnsupportedEncodingException; import lombok.SneakyThrows; public class SneakyThrowsExample implements Runnable { @SneakyThrows(UnsupportedEncodingException.class) public String

Lombok(1.14.8) - @Getter, @Setter, @ToString, @EqualsAndHashCode & @Data

@Getter / @Setter @Getter 和 @Setter,分别实现了 Gette r和 Setter 方法. package com.huey.hello.bean; import java.util.Date; import lombok.Getter; import lombok.Setter; public class Student { @Getter @Setter private int studNo; @Getter @Setter private String st

Lombok(1.14.8) - @NonNull

@NonNull @NonNull,生成一个非空检查. package com.huey.lombok; import lombok.Getter; import lombok.NonNull; import lombok.Setter; public class NonNullExample { @Getter @Setter private String nonNullField; public NonNullExample(@NonNull String nonNullField) { t

Lombok(1.14.8) - @Log

@Log @Logs,生成一个日志对象. package com.huey.lombok; import lombok.extern.java.Log; @Log public class LogExample { public static void main(String[] args) { log.info("This is an info message."); } } 除了,Log还有其他annotation来封装一些主流的日志类库:@CommonsLogCreates pr

Lombok(1.14.8) - @NoArgsConstructor & @AllArgsConstructor

@NoArgsConstructor @NoArgsConstructor,提供一个无参的构造方法. package com.huey.hello.bean; import java.util.Date; import lombok.Data; import lombok.NoArgsConstructor; @NoArgsConstructor @Data public class Student { private int studNo; private String studName; p

java的锁机制——synchronized

转自:http://blog.csdn.net/yangzhijun_cau/article/details/6432216 一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁): 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中). 取到锁后,他就开始执行同步代码(被synchronized修饰的代码):线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中

Java学习(十一):Java锁Synchronized,对象锁和类锁举例

Java的锁分为对象锁和类锁. 1. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内针对该对象的操作只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 2. 然而,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块. 3. 尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对该object中所有其它sync

java 多线程 synchronized块 同步方法

synchronized关键字又称同步锁 当方法执行完后,会自动释放锁,只有一个线程能进入此方法 看看以下的各种例子对synchronized的详细解释 1.是否加synchronized关键字的不同 1 public class ThreadTest { 2 3 public static void main(String[] args) { 4 Example example = new Example(); 5 6 Thread t1 = new Thread1(example); 7 T