你这个不是死锁,就是flag的判断有问题,每个线程都是自己把自己锁住了,当flag为true时,看以下两段代码:
创新互联建站基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业四川绵阳服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
public synchronized void set(String name) {
if (flag)
try {
wait();
public synchronized void out() {
if (flag)
try {
wait();
两个线程都在wait,当然卡住不动了。
看你的代码,把set那段改成这样应该就好了:
public synchronized void set(String name) {
if (!flag)
try {
wait();
如果没有差错的话报错应该是i=4这句吧,如果没有i操作锁,如何对i对象进行赋值等操作呢?当然会报异常的
实现UI界面吗?
用一个VECTOR保存密码,程序下次运行不就又不可以了吗?
package chen.util.algorithm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
public class Test2 {
public static void main(String[] args) throws IOException {
VectorString v = new VectorString(1);
v.add(0, "123"); // 设置出示密码
// 利用控制台来设置我们需要打印的值。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 程序要一直执行。如果程序重新运行就会把密码更改为123。建议你吧密码保存到本地文件或者数据库。
while(true){
String mima;
mima = br.readLine();
System.out.println("更改密码请输入321");
// 用户更改密码
if(mima.equals("321")){
String mima1 = br.readLine();
v.add(0, mima1);
}
// 密码正确后执行
if(mima.equals(v.get(0))){
System.out.println("正确");
}
// 初始密码 123
if(mima.equals(v.get(0))){
System.out.println("用户使用初始化密码进入系统");
}
}
}
}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款