查看本章节 查看作业目录 需求说明: 多线程操作同一个实例变量的操作会引发多线程并发的安全问题.现有 3 个线程代表 3 只猴子,对类中的一个整型变量 count(代表花的总数,共 20 朵花)进行操作.该变量代表花的总数,不同猴子(线程)每采摘一次,花的总数少 1,直至所有花被不同的猴子采摘完,程序结束 实现思路: 项目中创建 Current 类,在 Current 类中,声明静态的 Current 类型引用 current 和 int 类型的实例变量 num,并指定 num 的初始值为 20
这段时间公司项目中为了支持XP系统同事代码中用到了 GetThreadId 这个微软的API 但是这个API最低支持版本是 Windows version Windows Vista [desktop apps | UWP apps] Windows Server 2003 [desktop apps | UWP apps] 最后使用了 ZwQueryInformationThread 来解决 解决以后记录下 如果又遇到同样问题的 可以参考 参考文档 http://undocumented.nt
一.synchronized同步方法 1.方法内的变量为线程安全 “非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的了. 示例:由于HasSelfPrivateNum类中的addI(String username)方法的num变量是方法内部的变量,而方法内部的变量是私有的,所以两个线程在分开调用时不会出现非线程安全问题. package service; public class HasSelfPrivateNum { pu
如何获取线程对象的名称呢? public final String getName():获取线程的名称.如何设置线程对象的名称呢? public final void setName(String name):设置线程的名称针对不是Thread类的子类中如何获取线程对象名称呢? public static Thread currentThread():返回当前正在执行的线程对象 Thread.currentThread().getName() public final String getNam
构造方法: public Thread();分配一个新的线程对象 public Thread(String name);分配一个指定名字的新的线程对象 public Thread(Runnable target);分配一个带有指定目标新的线程对象 public Thread(Runnable target,String name);分配一个带有指定目标新的线程对象并指定名字 常用方法: public String getName() 获取当前线程名称. public void start();导