跳至主要内容

android java wait notify synchronized

class ThreadA extends Thread{
    public ThreadA(String name) {
        super(name);    }
    public void run() {
        synchronized (this) {
            try {
                Thread.sleep(1000); //  使当前线阻塞 1 s,确保主程序的 t1.wait(); 执行之后再执行 notify()              } catch (Exception e) {
                e.printStackTrace();            }
            System.out.println(Thread.currentThread().getName()+" call notify()");            // 唤醒当前的wait线程              this.notify();        }
    }
}
public class main {
    public static void main(String[] args) {
        ThreadA t1 = new ThreadA("t1");        synchronized(t1) {
            try {
                // 启动线程t1”                  System.out.println(Thread.currentThread().getName()+" start t1");                t1.start();                // 主线程等待t1通过notify()唤醒。                  System.out.println(Thread.currentThread().getName()+" wait()");                t1.wait();  //  不是使t1线程等待,而是当前执行wait的线程等待                  System.out.println(Thread.currentThread().getName()+" continue");            } catch (InterruptedException e) {
                e.printStackTrace();            }
        }
    }
}  

评论

此博客中的热门博文

onsen ui example splitter side menu swipe

<!DOCTYPE html> <html> <head> <title>TheyTube - Watch free video online</title> <link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css"> <link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">   <script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>   <script type="text/javascript">   ons.platform.select('android')   </script> </head> <body> <ons-splitter>   <ons-splitter-side id="menu" side="left" width="220px" collapse swipeable>     <ons-page>       <ons-list>         <ons-list-item onclick="fn.load('home.html')" tappable>           Home         </ons-list-item>         <ons-list-item onclick="fn.load('settings.html')" tappable>           Setti

go golang get disk usage free space remain info

package main import ( "fmt" "syscall" ) func main() { fmt.Println(DiskUsage("./")) } func DiskUsage(path string) uint64 { fs := syscall.Statfs_t{} err := syscall.Statfs(path, &fs) if err != nil { return 0 } return fs.Bfree * uint64(fs.Bsize) } //All space   = fs.Blocks * uint64(fs.Bsize) //Free space = fs.Bfree * uint64(fs.Bsize) //Used space= fs.All - disk.Free